我试图在Clojurescript的字符串中返回有效的URL(作为子字符串),我可以使用什么正则表达式?
(re-find #"regex for valid URL" "You can visit www.google.com")
=> "www.google.com"
(re-find #"regex for valid URL" "<b>www.google.com</b>")
=> "www.google.com"
(re-find #"regex for valid URL" "<b>www.google.com</b> and www.yahoo.com")
=> "www.google.com, www.yahoo.com"
答案 0 :(得分:0)
根据您希望脚本验证URL的小心程度,您提供的正则表达式,只要您摆脱'^'和'$'锚点,就可以很好地工作(as seen here)。< / p>
请注意,为了便于阅读,我在正则表达式中添加了一些空格。
我从正则表达式中看到了几个问题(正如您可能在该页面上看到的那样)。它匹配不应该的位置(例如重复的..
字符),而.co.uk
的网站与.co
部分以及域名和.uk
分别匹配。这本身就可以很容易地解决,只需将这些边缘情况直接添加到第二组((com|org|...)
)。
你需要删除'^'和'$'锚点的原因是,只有当URL是该行的唯一内容时,该模式才会匹配:^
必须在开头时匹配该行,$
只能在最后匹配。拥有<b>www.google.com</b>
意味着<b>
会使^
锚点无法与网址匹配,因为它不会从该行的开头开始。
其他建议,例如@ amalloy的链接,提供了一个更全面的解决方案,并且会正确匹配所有内容,但它非常复杂。
因此,确切地知道您想要匹配的内容,以及您愿意忽略/交易/放弃的内容,将有助于制作适合您的内容。