为什么正则表达式在
之间有不同的结果基本上如果我们查看变量regex,它与控制台中写的内容相同。但结果不同。
预期结果应为
new RegExp('^(?!\\s*$)[A-Za-z0-9\\s.,-]*$', 'g').test(' 1');
true
更新
我看到了区别,但是如何通过转义反斜杠来传递正则表达式值
...最终 JSON数据导致HTML破坏而不是表达式,我认为'\'打破了我添加'\'的HTML并修复了JSON数据但在尝试评估值时打破了结果。
我必须修复JSON数据才能解析'\',现在REGEXP恢复正常。
答案 0 :(得分:1)
由于new RegExp('\\') != /\\/
,它等于/\/
在文字正则表达式中用\\
替换\
使其有效:
/^(?!\s*$)[A-Za-z0-9\s.,-]*$/g.test(' 1');
// => true
答案 1 :(得分:1)
在你的第二个建筑regexp = /^(?!\\s*$)[A-Za-z0-9\\s.,-]*$/g
中,你不需要逃脱反斜杠。既然你做了,它认为你正在寻找一个字面反斜杠后跟字母s
。
试试这个:regexp = /^(?!\s*$)[A-Za-z0-9\s.,-]*$/g