URL 模式匹配问题,.+匹配所有之后
URL Pattern Matching issue, .+ matches all after
我正在将存储的 URLs 与当前的 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/
如何修复这个看似损坏的正则表达式?
放置结束标记 $
,例如:
/.+:\/\/www\.facebook\.com\/$/
但实际上也应该有一个开始标记 ^
,例如:
/^https?:\/\/www\.facebook\.com\/$/
此外,如果您要匹配当前域,您也可以只匹配 location.host
而不是 location.href
尝试在正则表达式的末尾添加一个 $。它是字符串结束的符号。
如果您对要匹配的内容非常具体,为什么不在 RegExp 中反映出来?
/^https?:\/\/(?:(?:www|m)\.)?facebook\.com\/?$/
- http 或 https
- www., m.或者没有子域名
- facebook.com
编辑以包含可选的尾部反斜杠
我正在将存储的 URLs 与当前的 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/
如何修复这个看似损坏的正则表达式?
放置结束标记 $
,例如:
/.+:\/\/www\.facebook\.com\/$/
但实际上也应该有一个开始标记 ^
,例如:
/^https?:\/\/www\.facebook\.com\/$/
此外,如果您要匹配当前域,您也可以只匹配 location.host
而不是 location.href
尝试在正则表达式的末尾添加一个 $。它是字符串结束的符号。
如果您对要匹配的内容非常具体,为什么不在 RegExp 中反映出来?
/^https?:\/\/(?:(?:www|m)\.)?facebook\.com\/?$/
- http 或 https
- www., m.或者没有子域名
- facebook.com
编辑以包含可选的尾部反斜杠