我正在尝试使用以下正则表达式来验证Javascript中的FQDN。这在C#中工作正常。但是当在javascript中使用时,Page会引发403错误。我做错了什么?
if (!fqdn.match(/(?=^.{1,254}$)(^(?:(?!\d|-)[a-zA-Z0-9\-]{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)/))
{
alert("Not a valid FQDN");
return false;
}
答案 0 :(得分:0)
您的正则表达式使用negative lookbehind assertion (?<!-)
,JavaScript不支持这些。
你可以重写你的正则表达式,以完全相同的方式匹配,而不需要后台:
/(?=^.{1,254}$)(^(?:(?!\d|-)[a-z0-9-]{0,62}[a-z0-9]\.?)+(?:[a-z]{2,})$)/i
我不确定正则表达式背后的逻辑是否真的对于验证FQDN是正确的,但这是一个不同的问题。例如,可选点使正则表达式易受catastrophic backtracking的影响。这是crash your browser的好方法。