2

我正在尝试使用以下正则表达式来验证 Javascript 中的 FQDN。这在 C# 中运行良好。但是 Page 在 javascript 中使用时会抛出 403 错误。我究竟做错了什么?

 if (!fqdn.match(/(?=^.{1,254}$)(^(?:(?!\d|-)[a-zA-Z0-9\-]{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)/)) 
    {
        alert("Not a valid FQDN");               
        return false;           
    }
4

1 回答 1

0

您的正则表达式使用否定的后向断言 (?<!-),JavaScript 不支持这些。

您可以重写您的正则表达式以完全相同的方式匹配,而无需后视:

/(?=^.{1,254}$)(^(?:(?!\d|-)[a-z0-9-]{0,62}[a-z0-9]\.?)+(?:[a-z]{2,})$)/i

不过,我不太确定正则表达式背后的逻辑是否真的适用于验证 FQDN,但这是另一个问题。例如,可选的点使正则表达式容易受到灾难性回溯的影响。这是使浏览器崩溃的好方法。

于 2013-08-02T07:31:35.107 回答