我正在尝试使用Regex验证域名。
这是我的正则表达式:
^((?!-)(*.)?[A-Za-z0-9-]{1,63}(?<!-).)+[A-Za-z0-9-]{1,63}
基本上,我不想匹配以"-"结尾的字符串"之前!"例:test.google -.com
在这里是"google-"但它越来越匹配,这对我来说是个问题。
虽然"测试-.google.com"没有得到匹配,这是预期的
我怀疑,"消极的回头看"((?
请告诉我下一步该怎么做。
您可以使用重复模式,从[A-Za-z0-9]
开始匹配,这样您就不需要在开始时提前查看。
那么你可以在开始匹配.
之前匹配一个可选的-
,但只有当它不是在最后一次出现之前,直到字符串的末尾。
注意尽管该模式与示例数据匹配,但这并不验证域名。
^[A-Za-z0-9]{1,63}(?:-[A-Za-z0-9]{1,63})*(?:-(?!.[A-Za-z0-9]{1,63}$))?(?:.[A-Za-z0-9]{1,63})+$
Regex演示