我给搜索一个正则表达式一个简单的网址:
https://regex101.com/r/UmMEMl/1/
它匹配文本中的简单网址。如何修改此正则表达式以匹配文本中的所有网址?
我在正则表达方面不太好,所以有人可以看看
答案 0 :(得分:0)
编写正则表达式以匹配所有网址并非易事。看看this link并选择一个满足您需求的产品。您链接到的那个和另一个答案中的一个都在该链接中的许多更复杂的url字符串上失败。
答案 1 :(得分:-1)
在你的例子中,你没有放旗帜。
https://regex101.com/r/UmMEMl/2
编辑:
您的原始正则表达式为#^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$#
你需要
#^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$#gm
(注意末尾的两个字母,标志)
EDIT2
你可以缩短你的正则表达式
#^(https?:\/\/(www\.)?)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$#gm
请注意,abc|abdc|ab|abd
可以写为abd?c?
,而我用http:\/\/|https:\/\/|...
缩短了