好的邮政编码+ 4不能用jQuery和正则表达式验证

时间:2013-02-14 17:57:18

标签: jquery regex asp.net-mvc validation

我正在使用jQuery来验证MVC表单上的表单元素,这是我验证邮政编码的正则表达式:

^(\d{5})|(\d{5}-\d{4})$

它可以很好地验证一个5位数的邮政编码,但是文本框输入元素周围的红色框仍然是 - 当我添加连字符和4个数字时,它会回来。

为什么?

2 个答案:

答案 0 :(得分:4)

以下RegRxp中的括号错误:

^(\d{5})|(\d{5}-\d{4})$

这就像说匹配^\d\d\d\d\d或匹配\d\d\d\d\d-\d\d\d\d$。它错误地匹配12345xx98765-4321。请改用以下内容:

^(\d{5}|\d{5}-\d{4})$

答案 1 :(得分:0)

当我更仔细地查看生成的HTML时,我注意到它有data-val-length-max =“9”。这是模型中的属性。我把它改成了10,瞧瞧!

为了使验证正常工作并仍然将未格式化的数字传递给数据库,我只是从模型的getter中返回:

_zip.Replace("-", string.Empty)