Reputation: 473
Seems pretty simple, but cannot figure out why this javascript code isn't working returning false, when expecting true) - I'm guessing it has got to do something with the escape characters? Could someone please help me write a JS block that will return true if whitespace present?
var inValid = new RegExp("[\s]");
var value = "test space";
var k = inValid.test(value);
alert(k);
Upvotes: 20
Views: 87261
Reputation: 1
var inValid = /^/\s/;
var value = "test value";
var k = inValid.test(value);
alert(k);
Upvotes: -1
Reputation: 707328
You don't need the brackets, you would need to escape the backslash (if using the string form) and the built-in regex syntax is easier because you don't have to escape backslashes when using the built-in regex syntax.
var inValid = /\s/;
var value = "test space";
var k = inValid.test(value);
alert(k);
Upvotes: 38
Reputation: 104780
If you want to match something there, but no whitespace:
alert(/^\S+$/.test(value));
Upvotes: 6
Reputation: 28737
You need a double escape character:
one for the "s" and one for the "\" itself:
var inValid = new RegExp("[\\s]");
Upvotes: 3
Reputation: 208475
You need to escape the backslash if you are creating your RegExp object from a string literal:
var inValid = new RegExp("[\\s]");
Alternatively you can just use the following:
var inValid = /\s/;
This uses a regular expression literal so the escaping of the backslash is not necessary, and there is no need for the character class here so I dropped the square brackets as well.
Upvotes: 5