繁体   English   中英

正则表达式:除www外的每个字母数字子域

[英]Regex : every alphanumeric subdomains, except www

这是一个很大的正则表达式(php)的一部分:

((?:[0-9A-z_-]+))

我使用它来验证子域名,但我想接受 “ www” 以外的所有子域名

有字母数字的“选择器”时,该怎么办?

编辑:最后使用(\\b(?!www\\b)(?:[0-9A-Za-z_-]+)) ,感谢Tim和ATS

首先,该正则表达式是不正确的,它应该是((?:[0-9A-Za-z_-]+)) (或简单地是([\\w-]+) -无需捕获的组)。 Za之间有一些您不想匹配的字符。

其次,使用否定的超前断言来确保您匹配的字符串不是www 为了确保我们不只是从www wwwwwhat.sgoing.on匹配ww (或者不匹配wwwwwhat.sgoing.on ),可能有必要根据上下文添加字边界锚点

\b(?!www\b)([\w-]+)

尝试这个:

((?!www)(?:[0-9A-Za-z_-]+))

这使用否定的前瞻来表示“不是www”。

假定正则表达式的其余部分(如您所写,它是较大表达式的一部分)确保该部分包含可能的子域。 因此,该部分应与所有子域匹配,但无需检查其是否与所有子域都匹配。
你仍然需要做,我不能 (因为我不知道你使用的是什么),是插入适当的边界检测后www \\b可能就足够了。

这对我有用以验证子域。

^([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?\.){0,}([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?){1,63}(\.[a-z0-9]{2,7})+$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM