我不知道为什么Safari会对此JavaScript正则表达式说错误。
^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,63}$
仅是域的验证,我在这部分(?<!-)
中遇到错误,域名不应以连字符结尾。
我不知道细节,但是听起来野生动物园不支持负面报道。
我确实需要一些帮助。
答案 0 :(得分:1)
正则表达式中的((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+
部分旨在匹配1到63个字符块,后跟一个点,该点由ASCII字母或数字或连字符组成,但不以连字符开头或结尾。尽管(?!-)
否定前瞻可以在符合JS ES5的正则表达式中使用,但此处不支持(?<!-)
后瞻。
因此,一种解决方案是从一开始就检查字符串中的-.
序列,如果找到了序列,则使整个匹配失败:
^(?!.*-\.)(?:(?!-)[A-Za-z0-9-]{1,63}\.)+[A-Za-z]{2,63}$
^^^^^^^^^
请参见regex demo。
如果您担心.*-\.
模式所涉及的性能和回溯,可以将(?!.*-\.)
替换为(?![^-]*(?:-(?!\.)[^-]*)*-\.)
,请参阅another regex demo。