用于域验证的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个字符块,后跟一个点,该点

我不知道为什么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个字符块,后跟一个点,该点由ASCII字母、数字或连字符组成,但不以连字符开头或结尾。
(?!-)
可以在符合JS ES5的正则表达式中使用负前瞻,那里不支持
(?lookback)

因此,解决方案是在字符串的最开始处检查
-.
序列,如果找到序列,则整个匹配失败:

^(?!.*-\.)(?:(?!-)[A-Za-z0-9-]{1,63}\.)+[A-Za-z]{2,63}$
 ^^^^^^^^^


如果您担心
*-\.
模式所涉及的性能和回溯,您可以将
(?!.*-\.)
替换为
(?![^-]*(?:-(?!\)[^-]*。)
,请参阅。

lookbehind尚未得到广泛支持。我不确定safari是否支持,但如果不支持,也不会感到惊讶。感谢各位,,,我应该为我的情况做些什么,我想修复此
(?我不确定您是否需要该软件,因为您正在确保至少有1个
{1,63}
而且你在开始的时候也要确保没有
-
,所以我觉得你不需要
(?全部放在一起。试试看。@JBone没有这个
(?域名将以连字符结尾,像这样
谷歌-.com
哦,是的。好的。你是对的。