如何编写正则匹配含/不含www、无连续点的合法.com格式URL
匹配需求的正则表达式
最终可用正则:^(?:www\.)?(?:\w+\.)*\w+\.com$
规则解释
^锚定字符串起始位置,避免匹配到包含符合规则片段的超长字符串(?:www\.)?非捕获组,匹配可选的www.前缀,?限定该前缀最多出现1次(?:\w+\.)*\w+核心域名匹配逻辑:(?:\w+\.)*匹配0组或多组「单词字符+单个英文句号」的组合,天然避免了连续两个.的情况,且*的量词允许没有中间分段- 末尾的
\w+匹配最后一级域名主体
\.com$锚定.com后缀,$限定字符串结束位置,避免匹配带多余后缀的内容
匹配效果验证
- 匹配通过的用例:
www.aBC.comabc.coma_bc.de8f.coma.com
- 匹配不通过的用例:
abc无.com后缀abc..com存在连续句号,不符合\w+\.的分段规则
原正则问题说明
你之前写的\w+.[\w]+.com存在三个问题:
- 没有对
.做转义,未转义的.会匹配任意字符,不是仅匹配英文句号 - 规则强制要求至少两个
.分隔的分段,无法匹配只有一个.的a.com这类短域名 - 没有首尾锚定,会匹配到包含符合规则片段的其他字符串
内容的提问来源于stack exchange,提问作者Cayo Emilio
相关产品推荐
相关产品推荐

