当我使用像regexpal.com这样的工具时,让我按照惯例使用正则表达式。例如,我想检查一个文本,如果匹配的字词长度至少为3个字母,并以空格结尾,那么它将匹配'now '
,'noww '
等等。< / p>
在regexpal.com上,这个正则表达式有效\w{3,}\s
这与上述两个词都匹配。
但是在javascript上我必须在w和s之前添加双反斜杠。像这样:
var regexp = new RegExp('\\w{3,}\\s','i');
否则它不起作用。我四处寻找答案并搜索了双反斜杠javascript正则表达式,但我得到的是关于如何逃避反斜杠的完全不同的主题等等。有人对此有解释吗?
答案 0 :(得分:4)
你可以编写没有双反斜杠的正则表达式,但你需要将正则表达式作为分隔符放在正斜杠内。
/^\w{3,}\s$/.test('foo ')
主播^
(匹配行边界的开头),$
(匹配行的结尾)有助于执行确切的字符串匹配您不需要i
修饰符,因为\w
匹配大写和小写字母。
答案 1 :(得分:1)
为什么呢?因为在字符串中,“\”引用了以下字符,因此“\ w”被视为“w”。它本质上是说“从字面上对待下一个字符并且不解释它”。
为避免这种情况,必须引用“\”,因此正常表达式解析器将“\\ w”视为“\ w”。