【发布时间】:2012-06-29 10:30:30
【问题描述】:
我有一个 JS 函数,它传递了一个运行正则表达式的字符串,并返回任何匹配项:
searchText= // some string which may or may not contain URLs
Rxp= new RegExp("([a-zA-Z\d]+://)?(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?/ig")
return searchText.match(Rxp);
RegExp 应返回以下任何(和类似的派生)的匹配项:
- google.com
- www.google.com
- http://www.google.com
- http://google.com
- google.com?querystring=value
- www.google.com?querystring=value
- http://www.google.com?querystring=value
- http://google.com?querystring=value
但是,没有这样的运气。有什么建议吗?
【问题讨论】:
-
我知道这不是一个答案,但我建议你看看这个网站:daringfireball.net/2010/07/improved_regex_for_matching_urls
-
如果你想通过它应该匹配的东西来指定一个正则表达式,它会帮助说出它不应该匹配的模式。
-
我见过勇敢的火球,但它不匹配,例如'google.com'
-
@ErgoSummary 是的,因为它不应该。例如,如果你写“大家好。你好吗?”它将被转换为“嗨all.how是你吗?”在此处查看完整说明:stackoverflow.com/a/10505843/1365010(请注意,stackoverflow 也与 google.com 不匹配)
-
@ErgoSummary 如果您确实需要匹配它,请参阅此答案中的正则表达式stackoverflow.com/a/10505843/1365010
标签: javascript regex