我需要一个简单的 JavaScript 正则表达式来匹配字符串中的 URL。这就是我现在所拥有的:
/(https?:\/\/)?[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}/gi
对于包含 3 个或更多字符的任何 URL,这在 99% 的情况下都有效,例如所有这些都有效:
abc.com
abcd.com
但我无法让它适用于包含 2 个字符的 URL:
ab.com
ow.ly
我正在使用这样的匹配方法:
let regex = /(https?:\/\/)?[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}/gi
let matches = "http://ab.com".match(regex)
正则表达式的这一部分:
[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]
表示“匹配一个字母或数字,后跟一个或多个字母或数字,最后跟一个字母或数字”。因此它不会匹配像“ab”这样的 2 个字符的字符串。我不知道为什么第三组在那里,但这没有意义;事实上,在我看来,你所需要的只是
[a-zA-Z0-9-]+
因为您可能也想匹配“x.com”。