URL模式匹配问题,。+匹配所有之后

时间:2015-03-28 14:32:42

标签: javascript regex url-parsing

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

假设用户存储www.facebook.com,这应该与http://www.facebook.comhttps://www.facebook.com相匹配,而且

问题是它还匹配了诸如https://www.facebook.com/events/upcoming等的子目录。

正则表达式例如:

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

匹配以下内容:

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

什么时候应该匹配

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

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

3 个答案:

答案 0 :(得分:1)

结束标记$,例如:

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

但是真的应该有一个开始标记^,例如:

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

如果您匹配当前域名,也可以匹配location.host而不是location.href

答案 1 :(得分:1)

如果您真正具体想要匹配的内容,为什么不在 RegExp 中反映出来?

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

Regular expression visualization

  • http或https
  • www。,m。或者没有子域名
  • facebook.com

Demo

编辑以包含可选的尾部反斜杠

答案 2 :(得分:0)

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