我正在使用jQuery来验证MVC表单上的表单元素,这是我验证邮政编码的正则表达式:
^(\d{5})|(\d{5}-\d{4})$
它可以很好地验证一个5位数的邮政编码,但是文本框输入元素周围的红色框仍然是 - 当我添加连字符和4个数字时,它会回来。
为什么?
答案 0 :(得分:4)
以下RegRxp中的括号错误:
^(\d{5})|(\d{5}-\d{4})$
这就像说匹配^\d\d\d\d\d
或匹配\d\d\d\d\d-\d\d\d\d$
。它错误地匹配12345x
和x98765-4321
。请改用以下内容:
^(\d{5}|\d{5}-\d{4})$
答案 1 :(得分:0)
当我更仔细地查看生成的HTML时,我注意到它有data-val-length-max =“9”。这是模型中的属性。我把它改成了10,瞧瞧!
为了使验证正常工作并仍然将未格式化的数字传递给数据库,我只是从模型的getter中返回:
_zip.Replace("-", string.Empty)