Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 正则表达式过滤器不进行精确匹配_Jquery_Regex - Fatal编程技术网

Jquery 正则表达式过滤器不进行精确匹配

Jquery 正则表达式过滤器不进行精确匹配,jquery,regex,Jquery,Regex,我正在使用以下正则表达式进行筛选 return this.href.match(/goto.com|xyz.com|loop.com/g); 然而,如果有一个名为dogoto.com的url,它也会被过滤。我怎样才能改变我的正则表达式来禁止它 您可以在其两侧添加\b(单词边界) return this.href.match(/\b(goto\.com|xyz\.com|loop\.com)\b/g); 下面是一个快速演示:^匹配字符串的开头。你可以这样做: return this.href

我正在使用以下正则表达式进行筛选

 return this.href.match(/goto.com|xyz.com|loop.com/g);
然而,如果有一个名为dogoto.com的url,它也会被过滤。我怎样才能改变我的正则表达式来禁止它


您可以在其两侧添加
\b
(单词边界)

return this.href.match(/\b(goto\.com|xyz\.com|loop\.com)\b/g);

下面是一个快速演示:

^
匹配字符串的开头。你可以这样做:

return this.href.match(/^(goto\.com|xyz\.com|loop\.com)/g);
或者,您可以匹配任何非字母数字字符:

return this.href.match(/\Wgoto\.com|\Wxyz\.com|\Wloop\.com/g);
此外,您可能希望转义点(此处完成),因为否则点将匹配任何字符,而不仅仅是它本身。

尝试:

/\b(goto\.com|xyz\.com|loop\.com)\b/g
\b
在单词的开头/结尾匹配。它需要在单词周围加括号,否则doxyz.com和doloop.com仍然会匹配


您希望regexp匹配或不匹配的确切内容是什么?例如,在开始处,有些人建议排除除行开始处的URL之外的所有内容\b这与边界有什么不同\b如比尔suggested@KayKay这一个基本上做相同的事情,但以不同的方式。谢谢你的帮助!它适用于您的测试用例,但它需要在备选方案周围加上括号,或者只修复
dogoto.com
doxyz.com
doloop.com
在不应该匹配的时候仍然匹配。因为演示不包含doxyz.com。您的正则表达式显示\bgoto.com或xyz.com或loop.com\b。正如Pietu所说,需要对.s进行转义,否则xyzHcom也会进行匹配。甚至没有注意到您已将其切换到其他位置。说得好!我已经更新了我的代码。@BillCriswell你能解释一下正则表达式吗?我会的。,因为只要一个
就可以匹配任何字符。我对单词边界做了
\b
,所以它就像一个空白,从我最了解的字符串或新行开始。我真的想了一下,想出了一个更容易管理的方法。