1

我正在使用以下正则表达式进行过滤

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

但是,如果有一个名为 dogoto.com 的 url,它也会被过滤掉。我怎样才能改变我的正则表达式来禁止它?

http://jsfiddle.net/wQYuz/7/

4

3 回答 3

2

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

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

这是一个快速演示:http: //jsfiddle.net/wQYuz/9/

于 2013-11-14T16:18:45.143 回答
1

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

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

或者,您可以在那里匹配任何非字母数字字符:

return this.href.match(/\Wgoto\.com|\Wxyz\.com|\Wloop\.com/g);

此外,您可能想要转义您的点(在此处完成),因为否则点匹配任何字符,而不仅仅是它自己。

于 2013-11-14T16:19:12.730 回答
0

尝试:

/\b(goto\.com|xyz\.com|loop\.com)\b/g

\b匹配单词的开头/结尾。它需要在单词周围加上括号,否则 doxyz.com 和 doloop.com 仍然匹配。

小提琴

于 2013-11-14T16:19:22.200 回答