查找任何空格字符时出现奇怪的正则表达式
new RegExp('^[^\s]+$').test('aaa');
=> true
这是预期的,但随后......
new RegExp('^[^\s]+$').test('aaa ');
=> true
这是如何回归的?
答案 0 :(得分:1)
您需要通过\
转义字符串中的\\
。否则,生成的正则表达式将为/^[^s]+$/
,其匹配除字符串s
以外的任何内容。
new RegExp('^[^\\s]+$').test('aaa ');
或者您可以使用\S
来匹配除空白之外的任何内容。
new RegExp('^\\S+$').test('aaa ');
最好直接使用正则表达式而不是解析正则表达式字符串模式。
/^[^\s]+$/.test('aaa ');
// or
/^\S+$/.test('aaa ');