0

我正在将存储的 URL 与当前 URL 进行匹配并且有一点问题 - 正则表达式在与 URL 本身匹配时工作正常,但由于某种原因,所有子目录也匹配(当我只想要直接匹配时课程)。

假设用户存储www.facebook.com,这应该匹配两者http://www.facebook.com并且https://www.facebook.com确实如此

https://www.facebook.com/events/upcoming问题是它也在匹配诸如etc之类的子目录。

例如正则表达式:

/.+:\/\/www\.facebook\.com/

匹配以下内容:

https://www.facebook.com/events/upcoming

什么时候应该匹配

 http://www.facebook.com/
 https://www.facebook.com/

如何修复这个看似损坏的正则表达式?

4

3 回答 3

1

放置一个结束标记$,例如:

/.+:\/\/www\.facebook\.com\/$/

但实际上也应该有一个开始标记^,例如:

/^https?:\/\/www\.facebook\.com\/$/

另外,如果您要匹配当前域,您也可以只匹配location.host而不是location.href

于 2015-03-28T14:36:06.707 回答
1

如果您对要匹配的内容非常具体,为什么不在RegExp中反映出来呢?

/^https?:\/\/(?:(?:www|m)\.)?facebook\.com\/?$/

正则表达式可视化

  • http 或 https
  • 万维网,米。或没有子域
  • 脸书网

演示

编辑以包括可选的尾随反斜杠

于 2015-03-28T14:43:04.317 回答
0

尝试在你的正则表达式末尾添加一个 $ 。它是字符串结束的符号。

于 2015-03-28T14:37:19.890 回答