Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to match strings that aren't entirely digits in JavaScript?
In JavaScript, you can use regular expressions to match strings that contain non-digit characters. This is useful when parsing complex data strings where you need to identify values that aren't purely numeric.
Problem Statement
Consider this complex string containing various data types:
studentId:"100001",studentName:"John Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678"
We want to extract values that contain characters other than digits, excluding boolean values and null.
Using Regular Expression
The following regular expression matches strings that aren't entirely digits:
var regularExpression = /(?<=:)(?!(?:null|false|true|\d+),)[\w-]+(?=,)/g;
var values = 'studentId:"100001",studentName:"John Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678"';
console.log("Original Value: " + values);
console.log("Strings that are not entirely digits:");
console.log(values.match(regularExpression));
Original Value: studentId:"100001",studentName:"John Smith",isTopper:true,uniqueId:10001J-10001,marks:78,newId:"4678" Strings that are not entirely digits: [ '10001J-10001' ]
How the Regular Expression Works
Let's break down the regular expression components:
-
(?<=:)- Positive lookbehind: matches position after a colon -
(?!(?:null|false|true|\d+),)- Negative lookahead: excludes null, false, true, or pure digits followed by comma -
[\w-]+- Matches one or more word characters or hyphens -
(?=,)- Positive lookahead: matches position before a comma -
g- Global flag: finds all matches
Alternative Approach
For a simpler approach that checks individual strings:
function isNotEntirelyDigits(str) {
return !/^\d+$/.test(str);
}
// Test with different values
console.log(isNotEntirelyDigits("12345")); // false (entirely digits)
console.log(isNotEntirelyDigits("10001J-10001")); // true (contains letters/hyphens)
console.log(isNotEntirelyDigits("abc123")); // true (mixed characters)
false true true
Conclusion
Regular expressions provide powerful pattern matching for identifying strings that aren't entirely digits. The complex regex handles specific data formats, while simpler patterns work for basic validation needs.
