1

現在、正規表現を使用して英国の郵便番号を検出する JavaScript プログラムがあります。現時点では、それらをアラートに表示しているだけです。現在、スペースのある郵便番号を検出するのに苦労しています。たとえば、SW12 5BV、BR3 8DD DE148NV、JN24HH などのスペースなしの郵便番号も受け入れる必要があります。現在の正規表現コード:

var postcodePattern = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
                var resultPost = postcodePattern.test(words[i]);
                if(resultPost)  {   
                alert("Postcode detected: " + words[i]);

また、他のさまざまな英国の郵便番号の正規表現も試しましたが、役に立ちませんでした。例

//var postcodePattern = /^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {0,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR ?0AA)$/

以前の正規表現に影響を与えた正規表現が行われた後に、すべての HTML タグを削除する関数もあります。

removeHTMLTags: function(aString){

        var strInputCode = aString;

        var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, " ");
        strTagStrippedText = strTagStrippedText.replace(/&nbsp/g," ");

        //Remove some escape characters
        strTagStrippedText = strTagStrippedText.replace(/\(|\)|\{|\}|\[|\]|\?|\*|\+|\||\//ig," ");

        //Replace multilple white spaces with single white space
        strTagStrippedText = strTagStrippedText.replace(/\s+/g," ");

        return strTagStrippedText; },

どんな助けでも感謝します。

4

1 に答える 1

1

スペースを文字クラス内に配置するのと同じくらい簡単ですか? 2 番目のコード ブロックの再フォーマット コードに基づいて、スペースを 1 つだけ許可していると仮定しています。

var postcodePattern = /[A-Z]{1,2}[0-9]{1,2}[ ]{0,1}[0-9][A-Z]{2}/i;
            var resultPost = postcodePattern.test(words[i]);
            if(resultPost)  {   
            alert("Postcode detected: " + words[i]);

コメントに従って、ここでもスペースで入力を分割しています:

bodyContentsStrippedTags.split(/\s+|\,|\&|\||\/|\?|\!|\:|;|"/);

分割正規表現で \s+ を使用します。これは、スペースを含む郵便番号が単一の文字列ではなく、2 つの個別の配列項目として正規表現に渡されることを意味します。

于 2013-02-11T20:12:14.700 に答える