我需要一个与包含 2 个或更多字符的域相匹配的 JavaScript 正则表达式

问题描述 投票:0回答:1

我需要一个简单的 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)
javascript regex
1个回答
2
投票

正则表达式的这一部分:

[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]

表示“匹配一个字母或数字,后跟一个或多个字母或数字,最后跟一个字母或数字”。因此它不会匹配像“ab”这样的 2 个字符的字符串。我不知道为什么第三组在那里,但这没有意义;事实上,在我看来,你所需要的只是

[a-zA-Z0-9-]+

因为您可能也想匹配“x.com”。

© www.soinside.com 2019 - 2024. All rights reserved.