用于验证FQDN的正则表达式

Regular expression to validate FQDN

本文关键字:正则表达式 FQDN 验证 用于      更新时间:2023-09-26

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

您的regex使用了一个负的后备断言(?<!-),而JavaScript不支持这些断言。

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

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

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