Javascript + Regex =以某种方式打破函数调用

时间:2013-08-07 20:31:15

标签: javascript html regex

html代码:

<div class="submitForm">
  <input type="button" value="button" onclick="doValidateForm();" /></div>

的javascript:

<script type="text/javascript">
  function doValidateForm() {
    if (!/^[0-9]+${5}/.test(zip) && zip != "") {
      alert("Zip has invalid characters.");
      return false;
    }
  }
</script>

问题是{5}。有了它,我得到“JavaScript运行时错误:'doValidateForm'是未定义的。”我在表达式中移动了{5}。如果不存在,代码执行正常。

我试过了:

/^[0-9]{5}+$/.test(zip)

/^{5}[0-9]+$/.test(zip)

但它仍然破裂。任何帮助将不胜感激。

编辑固定代码。

2 个答案:

答案 0 :(得分:1)

你可能正在寻找这个正则表达式:

/^[0-9]{5}$/

它匹配5位数字(前导零作为数字计算)

像这样使用:

if (!/^[0-9]{5}$/.test(zip)) { ...

快速解释:

+表示“一次或多次”
{5}表示“恰好5次”

在任何正则表达式中,+{5}一个接一个地没有意义。这有点像要求javascript来计算3+*5是什么。这只是一个粗略的比较 - 相似之处在于没有操作数的运算符)

答案 1 :(得分:1)

这个条件:

if (!/^[0-9]+${5}/.test(zip) && zip != "")

应改写为:

if (/^\d{5}$/.test(zip) == false) {