我想重定向某些 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
但不是:
JavaScript 中的字符串结尾 ($) 无法正确识别。这就是我的jsfiddle演示到目前为止。它应该是 True,但即使使用“m”也总是 false。
我做错了什么?
最佳答案
?
未转义。您需要使用两个反斜杠来转义它。
patternURL = new RegExp("http(s)?://www\.facebook\.com(/|/\\?ref=(tn_tnmn|logo)+)?$", "m");
这是因为当你使用regexp构造函数时,你使用的是一个字符串,并且在构造regexp对象之前,第一个反斜杠被“用来”在字符串中转义。如果您像这样声明它,则不需要它:
patternURL =/http(s)?://www\.facebook\.com(/|/\?ref=(tn_tnmn|logo)+)?$/m
关于JavaScript RegEx 字符串结尾不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219497/