为什么我必须在javascript正则表达式中添加双反斜杠?

时间:2015-04-04 02:45:29

标签: javascript regex

当我使用像regexpal.com这样的工具时,让我按照惯例使用正则表达式。例如,我想检查一个文本,如果匹配的字词长度至少为3个字母,并以空格结尾,那么它将匹配'now ''noww '等等。< / p>

在regexpal.com上,这个正则表达式有效\w{3,}\s这与上述两个词都匹配。

但是在javascript上我必须在w和s之前添加双反斜杠。像这样:

var regexp = new RegExp('\\w{3,}\\s','i');

否则它不起作用。我四处寻找答案并搜索了双反斜杠javascript正则表达式,但我得到的是关于如何逃避反斜杠的完全不同的主题等等。有人对此有解释吗?

2 个答案:

答案 0 :(得分:4)

你可以编写没有双反斜杠的正则表达式,但你需要将正则表达式作为分隔符放在正斜杠内。

/^\w{3,}\s$/.test('foo ')

主播^匹配行边界的开头),$匹配行的结尾)有助于执行确切的字符串匹配您不需要i修饰符,因为\w匹配大写和小写字母。

答案 1 :(得分:1)

为什么呢?因为在字符串中,“\”引用了以下字符,因此“\ w”被视为“w”。它本质上是说“从字面上对待下一个字符并且不解释它”。

为避免这种情况,必须引用“\”,因此正常表达式解析器将“\\ w”视为“\ w”。