首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex :除www以外的每个字母数字子域

Regex :除www以外的每个字母数字子域
EN

Stack Overflow用户
提问于 2014-02-19 09:40:26
回答 3查看 213关注 0票数 0

这是一个大型regex (php)的一部分:

代码语言:javascript
复制
((?:[0-9A-z_-]+))

我使用它来验证子域,但我想接受除以外的每个子域 "www“。

如果有字母数字“选择器”,我该怎么做?

编辑:由于提姆和自动测试系统,终于使用了(\b(?!www\b)(?:[0-9A-Za-z_-]+))

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-19 09:43:42

试试这个:

代码语言:javascript
复制
((?!www)(?:[0-9A-Za-z_-]+))

这使用了负面展望来表示“不是www”。

这假设regex的其余部分(正如您所写的,它是更大表达式的一部分)确保这个部分只包含一个可能的子域。因此,这个部分应该匹配所有的子域,但不需要检查它是否匹配所有的子域。

您仍然需要做的是,我不能(因为我不知道您在使用什么),就是在www之后插入适当的边界检测。也许\b就足够了。

票数 2
EN

Stack Overflow用户

发布于 2014-02-19 09:46:38

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

其次,使用负前瞻性断言确保所匹配的字符串不是www。为了确保不只是从www获取子匹配www(或无法匹配wwwwwhat.sgoing.on),可能需要添加字界锚,具体取决于上下文:

代码语言:javascript
复制
\b(?!www\b)([\w-]+)
票数 3
EN

Stack Overflow用户

发布于 2014-02-19 09:49:08

这对我验证子域是有效的。

代码语言:javascript
复制
^([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})+$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21876471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档