正则表达式英国邮政编码Javascript空间问题

时间:2013-02-11 19:46:06

标签: javascript regex firefox-addon

目前我有一个使用Regex检测英国邮政编码的JavaScript程序。 在那一刻,它只是在警报中显示它们。 我目前正在努力用空格检测Postcodes。 例如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; },

任何帮助都会感激不尽。

1 个答案:

答案 0 :(得分: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 +。这意味着带有空格的邮政编码将作为两个单独的数组项而不是单个字符串传递给正则表达式。