我知道有很多与验证相关的问题但是,在看了这么多关于SO之后我似乎无法解决这个问题。
我正在尝试将邮政编码与我在SO上找到的正则表达式进行匹配。小提琴说邮政编码是无效的,但是当我在rubular.com上测试正则表达式时它工作正常
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,但结果仍然是相同的
答案 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