正则表达式不同的结果

时间:2015-09-03 01:30:08

标签: javascript regex

为什么正则表达式在

之间有不同的结果

enter image description here

基本上如果我们查看变量regex,它与控制台中写的内容相同。但结果不同。

预期结果应为

new RegExp('^(?!\\s*$)[A-Za-z0-9\\s.,-]*$', 'g').test(' 1');
true

更新

我看到了区别,但是如何通过转义反斜杠来传递正则表达式值

enter image description here

...最终 JSON数据导致HTML破坏而不是表达式,我认为'\'打破了我添加'\'的HTML并修复了JSON数据但在尝试评估值时打破了结果。

我必须修复JSON数据才能解析'\',现在REGEXP恢复正常。

2 个答案:

答案 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