我正在将存储的URL与当前URL匹配并且有一些问题 - 正则表达式在与URL本身匹配时正常工作,但由于某种原因所有子目录也匹配(当我想要直接时)当然只匹配。)
假设用户存储www.facebook.com
,这应该与http://www.facebook.com
和https://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/
如何修复这个看似破坏的正则表达式?
答案 0 :(得分:1)
结束标记$
,例如:
/.+:\/\/www\.facebook\.com\/$/
但是真的应该有一个开始标记^
,例如:
/^https?:\/\/www\.facebook\.com\/$/
如果您匹配当前域名,也可以匹配location.host
而不是location.href
答案 1 :(得分:1)
如果您真正具体想要匹配的内容,为什么不在 RegExp 中反映出来?
/^https?:\/\/(?:(?:www|m)\.)?facebook\.com\/?$/
编辑以包含可选的尾部反斜杠
答案 2 :(得分:0)
尝试在正则表达式结束时添加$。它是字符串结尾的符号。