【问题标题】:RegEx for fixed number of digits?固定位数的正则表达式?
【发布时间】:2014-12-12 02:02:51
【问题描述】:

我正在完成我必须为我的家庭作业做的表格,就在我以为我已经完成时,我发现了一个错误。

我需要一个用于输入字段的正则表达式,如果不完全是 13 位数字,它将返回警报。

虽然我知道正确的正则表达式是:/^\d{13}$/,但我还需要它来忽略空字段。 (因为我不希望在用户切换到不同的输入字段时触发警报)

就在我以为我有它的时候:/^$|\d{13}$/,事实证明,如果少于 13 位,它会返回警报,但如果有更多则不会,不像 /^\d{13}$/,它适用于 14+数字。

有人可以帮我解决这个问题吗?谢谢

这是函数的其余部分:

        function checkNum(box) {
        var re= new RegExp(/^$|\d{13}$/);
        if(!box.value.match(re)) {
            alert("13 numbers are required");
            document.getElementById("numbers").value = '';
        }
    }

这是输入字段:

<input type="text" name="numbers" id="numbers" placeholder="Numbers" onFocus="this.placeholder=''" onBlur="checkNum(this); this.placeholder='Numbers'"/>

【问题讨论】:

    标签: javascript regex digits


    【解决方案1】:

    非常接近!

    /^$|^\d{13}$/
    

    您只是忘记指定字符串开头的 13 位数字

    【讨论】:

    • 这是另一条路线...^(\d{13})?$
    • 太棒了。做到了。谢谢!我刚刚习惯了 JS。
    • /^$|^\d{13}$/ 针对空字符串 '' 测试返回 true。
    • @Franch “我也需要它来忽略一个空字段” - 来自问题
    【解决方案2】:

    另外,只是match() 的替代品,为了更快地进行布尔检查,请使用test()

    if (!/^\d{13}$/.test(box.value)) {
        alert("13 numbers are required");
        document.getElementById("numbers").value = '';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多