这是一个大型regex (php)的一部分:
((?:[0-9A-z_-]+))我使用它来验证子域,但我想接受除以外的每个子域 "www“。
如果有字母数字“选择器”,我该怎么做?
编辑:由于提姆和自动测试系统,终于使用了(\b(?!www\b)(?:[0-9A-Za-z_-]+))。
发布于 2014-02-19 09:43:42
试试这个:
((?!www)(?:[0-9A-Za-z_-]+))这使用了负面展望来表示“不是www”。
这假设regex的其余部分(正如您所写的,它是更大表达式的一部分)确保这个部分只包含一个可能的子域。因此,这个部分应该匹配所有的子域,但不需要检查它是否匹配所有的子域。
您仍然需要做的是,我不能(因为我不知道您在使用什么),就是在www之后插入适当的边界检测。也许\b就足够了。
发布于 2014-02-19 09:46:38
首先,这个正则表达式是不正确的,它应该是((?:[0-9A-Za-z_-]+)) (或者简单地说是([\w-]+) --非捕获组是不必要的)。Z和a之间有一些您不想匹配的字符。
其次,使用负前瞻性断言确保所匹配的字符串不是www。为了确保不只是从www获取子匹配www(或无法匹配wwwwwhat.sgoing.on),可能需要添加字界锚,具体取决于上下文:
\b(?!www\b)([\w-]+)发布于 2014-02-19 09:49:08
这对我验证子域是有效的。
^([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})+$https://stackoverflow.com/questions/21876471
复制相似问题