2

次の正規表現を使用して、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;           
    }
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 に答える