我需要一个正则表达式来匹配小数点后面恰好有3或2个字符,以便验证www.xyz.com而不是xyz.Complete。
我认为你需要的是 \b
我想不出一个情况,它不能通过使用单词边界断言\b
来合理覆盖。其他答案只需要在结尾加上\b
(如果它总是.com
,那么你会使用.com\b
,这基本上意味着一个字面上的点(.
)字符后跟com
,其后跟的内容不是字母、数字或下划线。它是一种零宽度断言,这意味着它不会捕获任何内容。要允许.net
或.edu
,您将使用\.(com|edu|net)\b
\b
断言在大多数使用正则表达式的工具和语言中都得到支持,但如果您需要更精确的控制(例如,您可能希望在com
之后允许下划线),您的工具或语言编译器可能支持“前瞻”,它们也是零宽度断言。(在上面提到的例子中,您将使用类似于\.(com|net|edu|org|mil|museum)(?![a-zA-Z0-9])
这样的东西,它将禁止数字和大写或小写字母)
^
,$
)。使用以下代码:^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$
xyz.com/index.html
是无效的。其他通过的内容包括:..com
、-.com
、ten.-.-.-.-.-.-.net
。 - Brigand严格回答您的问题:
精确匹配小数点后面的3或2个字符
仅匹配结尾:
\.[A-Za-z]{2,3}$
\
转义了 .
,否则它会表示“任何字符”
OR
(\.(com|...
) 表达式。为了让我指定的表达式起作用,顶级域必须在字符串的末尾。 - beerbajay^[a-zA-Z0-9\-\.]+\.[A-Za-z]{2,3}$
。它只会匹配结尾处有效的2个或3个字母。如果您想修复它,请使用 ^([a-zA-Z0-9\-\.]+\.)([A-Za-z]{4,})$
检查$2中的错误,然后将匹配内容替换为您想要的任何内容,例如 $1com
。 - user557597