用于域验证的javascript正则表达式不';我不在野生动物园工作
我不知道为什么safari会说这个javascript正则表达式有错误用于域验证的javascript正则表达式不';我不在野生动物园工作,javascript,regex,safari,Javascript,Regex,Safari,我不知道为什么safari会说这个javascript正则表达式有错误 ^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,63}$ ^((?!-)[A-Za-z0-9-]{1,63}(?)? 只是域的验证,我在这部分中得到了错误(?域名不应该以连字符结尾 我不知道细节,但听起来好像safari不支持负面的背后 我的问题确实需要一些帮助。正则表达式中的((?!-)[A-Za-z0-9-]{1,63}(?部分用于匹配1到63个字符块,后跟一个点,该点
^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,63}$
^((?!-)[A-Za-z0-9-]{1,63}(?)?
只是域的验证,我在这部分中得到了错误(?域名不应该以连字符结尾
我不知道细节,但听起来好像safari不支持负面的背后
我的问题确实需要一些帮助。正则表达式中的((?!-)[A-Za-z0-9-]{1,63}(?部分用于匹配1到63个字符块,后跟一个点,该点由ASCII字母、数字或连字符组成,但不以连字符开头或结尾。(?!-)
可以在符合JS ES5的正则表达式中使用负前瞻,那里不支持(?lookback)
因此,解决方案是在字符串的最开始处检查-.
序列,如果找到序列,则整个匹配失败:
^(?!.*-\.)(?:(?!-)[A-Za-z0-9-]{1,63}\.)+[A-Za-z]{2,63}$
^^^^^^^^^
看
如果您担心*-\.
模式所涉及的性能和回溯,您可以将(?!.*-\.)
替换为(?![^-]*(?:-(?!\)[^-]*。)
,请参阅。lookbehind尚未得到广泛支持。我不确定safari是否支持,但如果不支持,也不会感到惊讶。感谢各位,,,我应该为我的情况做些什么,我想修复此(?我不确定您是否需要该软件,因为您正在确保至少有1个{1,63}
而且你在开始的时候也要确保没有-
,所以我觉得你不需要(?全部放在一起。试试看。@JBone没有这个(?域名将以连字符结尾,像这样谷歌-.com
哦,是的。好的。你是对的。