簡體   English   中英

用於驗證FQDN的正則表達式

[英]Regular expression to validate FQDN

我正在嘗試使用以下正則表達式來驗證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;           
    }

您的正則表達式使用否定的后向斷言 (?<!-) ,而JavaScript不支持它們。

您可以重寫正則表達式,以完全相同的方式進行匹配,而無需擔心:

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

不過,我不確定正則表達式背后的邏輯是否真的適用於驗證FQDN,但這是另一個問題。 例如,可選點使正則表達式易於遭受災難性的回溯 這是使瀏覽器崩潰的好方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM