当我使用像www.example.com这样的工具时regexpal.com,它让我像以前一样使用正则表达式。例如,我想检查一个文本,如果有一个至少3个字母长且以白色结尾的单词匹配,那么它将匹配'now '
,'noww '
等等。
在regexpal.com上,此正则表达式适用于\w{3,}\s
,它匹配上面的两个单词。
但是在JavaScript上,我必须在w和s之前添加双反斜杠。就像这样:
var regexp = new RegExp('\\w{3,}\\s','i');
字符串
否则它不起作用。我四处寻找答案,搜索双反斜杠JavaScript正则表达式,但我得到的都是关于如何转义反斜杠等完全不同的主题。有人能解释一下吗?
3条答案
按热度按时间bqujaahr1#
你可以不写双反斜杠,但是你需要把正则表达式放在正斜杠里面作为分隔符。
字符串
锚点
^
(* 匹配行边界的开始 ),$
( 匹配行的结束 *)有助于进行精确的字符串匹配。您不需要i
修饰符,因为\w
匹配大小写字母。xzlaal3s2#
为什么?因为在字符串中,“\”将后面的字符引起来,所以“\w”被视为“w”。它本质上是说“按字面意思对待下一个字符,不要解释它”。
为了避免这种情况,“\”也必须加引号,因此“\w”被正则表达式解析器视为“\w”。
vxf3dgd43#
这里的问题与字符串中转义序列的处理有关。在JavaScript中,反斜杠()是一个转义字符,所以字符串中的“\d”就变成了“d”。
要创建想要的正则表达式,需要转义反斜杠本身。也就是说,您应该使用“\d”而不是“\d”:
下面是你的函数的修正版本:
字符串