【问题标题】:Regular expression to ignore spaces between digits正则表达式忽略数字之间的空格
【发布时间】:2023-01-16 20:48:22
【问题描述】:

有没有一种简单的方法可以忽略正则表达式中数字之间的空格?

我希望 RegEx 匹配任何 10 位数字,包括它们之间有空格的数字。

例如,以下 3 个示例将匹配:

  1. 4874526395
  2. 4874 526 395
  3. 48745 26395

    ^\d{10}$ 是当前的正则表达式,预计我需要在某处使用 \s 但不确定如何使用。

【问题讨论】:

  • 只是空格(ascii 32)或任何空格(制表符、换行符等)?
  • 你可以试试这个^(\d *){10}$

标签: javascript java regex


【解决方案1】:

您可以使用以下正则表达式:

^([d]s*){9}[d]$

请注意,这与前导或尾随空格不匹配。如果您也需要匹配这些情况,只需在正则表达式前后添加一个s*(即^s*([d]s*){9}[d]s*$)。

如果需要,您可以在regex101 以交互方式检查此正则表达式并在那里生成代码。

【讨论】:

  • [d] 就是d...
  • 感谢 miile7,这正是我所需要的。好的和简单的解决方案!
【解决方案2】:

我可能倾向于在检查输入的正确位数之前去掉空格:

var input = "4874 526 395";
if (/^d{10}$/.test(input.replace(/s+/g, ""))) {
    console.log("MATCH");
}

【讨论】:

    【解决方案3】:

    使用以下代码,即使数字之间有字符串,您也可以消除数字之间的差距

    String repl = "111 222 333".replaceAll("(?<=d) +(?=d)", ""); //=> 你好 111222333 世界!

    此正则表达式“(?<=d) +(?=d)”确保匹配前后有数字的空格。

    【讨论】:

      【解决方案4】:

      您可以使用 ^( *d){10} *$ 将 10 位数字与它们之前/之后或之间的空格字符匹配。

      可能更好理解的是首先删除空格字符。

      string.replace(/ +/g, "").match(/^d{10}$/)
      

      如果要匹配所有空格(空格、换行符、制表符等),而不仅仅是空格,可以将正则表达式中的空格替换为s

      【讨论】:

      • 另一位用户已经给出了这个有用的答案。
      【解决方案5】:

      这里有一个建议的方法: How to ignore whitespace in a regular expression subject string?

      但在这种情况下,将所有空格替换为空字符串并使用正则表达式会更容易:

      s.replaceAll("\s+","").matches("^\d{10}$")
      

      【讨论】:

        猜你喜欢
        • 2020-05-08
        • 2021-09-13
        • 2020-08-06
        • 1970-01-01
        • 2011-08-12
        • 2016-03-30
        • 1970-01-01
        • 1970-01-01
        • 2018-11-23
        相关资源
        最近更新 更多