验证RegEx问题

时间:2015-04-02 19:08:43

标签: javascript regex

我知道有很多与验证相关的问题但是,在看了这么多关于SO之后我似乎无法解决这个问题。

我正在尝试将邮政编码与我在SO上找到的正则表达式进行匹配。小提琴说邮政编码是无效的,但是当我在rubular.com上测试正则表达式时它工作正常

Rubular Image

JS小提琴https://jsfiddle.net/aeqawadv/1/

<div id="test"></div>

<script type="text/javascript">
    var string = "SK13 6NT";
    var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$i/);
    if (ukPostcode.test(string)) {
        document.getElementById("test").innerHTML="Valid";
    } else {
        document.getElementById("test").innerHTML="Invalid";
    }
</script>

有什么想法吗?我也尝试过match()作为对抗test()

修改

刚刚意识到我使用的是rubular而不是scriptular,但结果仍然是相同的

2 个答案:

答案 0 :(得分:1)

你有一个&#34;我&#34;在你的美元符号结束后。

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$i/);

应该是

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/);

或(如果您的目标是不区分大小写)

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/i);

答案 1 :(得分:1)

在字符串i锚点结束后删除$,为什么不使用正则表达式文字?

var ukPostcode = /^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/

如果i应该用作不区分大小写的修饰符,请将其放在分隔符之后。

var ukPostcode = /^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/i