JavaScript RegEx 字符串结尾不起作用

标签 javascript regex

我想重定向某些 Facebook 网址。到目前为止我有一个工作chrome plugin ,但有些网址没有正确匹配。

var patternURL = new RegExp("http(s)?://www\.facebook\.com(/|/@?ref=(tn_tnmn|logo)+)?$", "m");

应该匹配:

https://www.facebook.com/?ref=tn_tnmn
https://www.facebook.com/?ref=logo
https://www.facebook.com/
https://www.facebook.com

但不是:

https://www.facebook.com/messages/

JavaScript 中的字符串结尾 ($) 无法正确识别。这就是我的jsfiddle演示到目前为止。它应该是 True,但即使使用“m”也总是 false。

我做错了什么?

最佳答案

? 未转义。您需要使用两个反斜杠来转义它。

patternURL = new RegExp("http(s)?://www\.facebook\.com(/|/\\?ref=(tn_tnmn|logo)+)?$", "m");

http://jsfiddle.net/tRm7U/8/

这是因为当你使用regexp构造函数时,你使用的是一个字符串,并且在构造regexp对象之前,第一个反斜杠被“用来”在字符串中转义。如果您像这样声明它,则不需要它:

patternURL =/http(s)?://www\.facebook\.com(/|/\?ref=(tn_tnmn|logo)+)?$/m

关于JavaScript RegEx 字符串结尾不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219497/

相关文章:

javascript - 如何防止iframe修改顶级浏览上下文(top.history)?

用于多项选择测验的 Javascript

javascript - 在 javascript/HTML5 中建立直接的 udp 连接

regex - 在PowerShell中检查所有小写字母的字符串

javascript - JS拆分字符串并返回每个拆分的索引

javascript - 数组如何包含函数在js中工作

javascript - transient 和非脏属性,ember-data

javascript - 用于拆分成句子的正则表达式,忽略小数作为拆分的一部分?

Python正则表达式在某一点之前删除所有内容

regex - 正则表达式不允许连续字符无空格