【问题标题】:Match 11 or 13 digits using regex [closed]使用正则表达式匹配 11 位或 13 位数字 [关闭]
【发布时间】:2014-08-21 11:33:41
【问题描述】:

我正在编写一个代码,其中我收到的数字正好是 11 位或 13 位数字。但是,问题在于它可能在随机位置包含一些连字符。

谁能为此建议一个正则表达式?

样本输入(假设只有 5 位):
1. 12345 2. 1-234-5 3. 12-34-5 4. 123-45 5. 1-2-34-5

【问题讨论】:

  • 删除所有非数字,然后使用计数。下一个!
  • (^[\d-]{11,13}$) 使用这个。
  • 你可以使用替换...
  • @vks:这将匹配 ------------123456789012(12 位数字)。

标签: javascript regex


【解决方案1】:

试试这个代码 sn-p。它可能会帮助你。

var str="123-45";
str.replace( /\D+/g, '');

这里,

\D - 查找非数字字符。 因此,代码将用 '' 替换非数字。

【讨论】:

  • 请解释为什么这应该是解决方案,它将使您的答案更有用,例如对于新手用户。
  • 这个解决方案删除了​​除NUMBER之外的所有符号和字符,所以它在任何情况下都会有所帮助。这是一个通用的解决方案。
【解决方案2】:

删除所有破折号,然后计算剩余字符数会更容易,可读性也更高。

var str = "1-234-5";
var res = str.replace(/-/g, '').length;
if(res === 11 || res === 13) {
    //do whatever
}

【讨论】:

    【解决方案3】:

    试一试:

    ^(?:-?\d){11}(?:-?\d-?\d)?$
    

    或者,如果- 不能排在第一位:

    ^(?:\d-?){11}(?:\d-?\d)?$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 2017-04-06
      • 2021-11-10
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多