这是我想要匹配的内容:
this_is.ok.com
this_is.another_valid.domain.com
这里有一些我不想匹配的字符串:
this_one.is_not_ok.com
not_ok.com
also.not_ok
,即最终或倒数第二部分的除之外的任何部分都可以有下划线。
我提出的正则表达式:
^([a-zA-Z0-9-_]{0,63}?\.)*([a-zA-Z0-9-]{0,63}?\.){1}([a-zA-Z0-9-]{0,63}?){1}$
它确实有效,但我觉得它可能更好。
NB:请不要讨论域名中的下划线。只需评论正则表达式。
答案 0 :(得分:1)
您可以使用此重构且较小的正则表达式:
^([\w-]{1,63}?\.)*([a-zA-Z0-9-]{1,63}\.)([a-zA-Z0-9-]{2,63})$
变更是:
\w
- [a-zA-Z0-9_]
{1}
是不必要的,应该被取出{0,63}
至少应为{1,63}
请注意,这个重构的正则表达式在regex101网站上需要106步,而正则表达式采用124步。
答案 1 :(得分:0)