【问题标题】:Regular expression to validate FQDN验证 FQDN 的正则表达式
【发布时间】:2013-08-02 07:28:20
【问题描述】:

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

【问题讨论】:

    标签: c# javascript .net regex


    【解决方案1】:

    您的正则表达式使用 negative lookbehind assertion (?&lt;!-),而 JavaScript 不支持这些。

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

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

    不过,我不太确定正则表达式背后的逻辑是否真的适用于验证 FQDN,但这是另一个问题。例如,可选的点使正则表达式容易受到catastrophic backtracking 的影响。这是crash your browser 的好方法。

    【讨论】:

    • 感谢您的快速回复。我一直在寻找正确的格式验证,这是我在大多数人的建议中发现的。顺便说一句,您更新的表达式末尾的“i”是什么?
    • 这是我找到的另外两个。 @nd 不检查长度。 1. (?=^.{1,254}$)(^(?:(?!\d+\.|-)[a-zA-Z0-9_\-]{1,63}(?
    • /i 使正则表达式不区分大小写。至于你的另一个问题,我看看你昨天写的问题,我会尽力回答。
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多