Reputation: 1343
I am learning javascript and I am analyzing existing codes.
In my JS reference book, it says to search on a single space use "\s
"?
But I have came across the code
obj.match(/Kobe Bryant/);
Instead of using \s
, it uses the actual space?
Why doesn't this generate an error?
Upvotes: 47
Views: 139106
Reputation: 316
\xA0 is also a white space, especially a non-breaking space. We did have an issue with Quill Editor when we paste a plain text with spaces from notepad++. The white space in JS \xA0 is a white space but does not match a normal white space \u0020 (' ').
Upvotes: 0
Reputation: 124768
\s
matches any whitespace character, including tabs etc. Sure you can use a literal space also without problems. Just like you can use [0-9]
instead of \d
to denote any digit. However, keep in mind that [0-9]
is equivalent to \d
whereas the literal space is a subset of \s
.
Upvotes: 10
Reputation: 655189
The character class \s
does not just contain the space character but also other Unicode white space characters. \s
is equivalent to this character class:
[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
Upvotes: 92
Reputation: 42443
In addition to normal spaces, \s
matches different kinds of white space characters, including tabs (and possibly newline characters, according to configuration). That said, matching with a normal space is certainly valid, especially in your case where it seems you want to match a name, which is normally separated by a normal space.
Upvotes: 4
Reputation: 887305
No. It is perfectly legal to include a literal space in a regex.
However, it's not equivalent - \s
will include any whitespace character, including tabs, non-breaking spaces, half-width spaces and other characters, whereas a literal space will only match the regular space character.
Upvotes: 17