正则表达式以验证FQDN

时间:2013-08-02 07:28:20

标签: c# javascript .net regex

我正在尝试使用以下正则表达式来验证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;           
    }

1 个答案:

答案 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的好方法。