使用单个空格验证9个数字的正则表达式

时间:2017-12-27 16:57:32

标签: java regex

我需要一个正则表达式来验证一个9位数,其间有一个空格

到目前为止,我已经尝试了

^([0-9]{0-9})\s{1}$

2 个答案:

答案 0 :(得分:3)

代码

See regex in use here

^(?=\d+ \d+$)[\d ]{10}$

结果

输入

1 23456789
12 3456789
123 456789
1234 56789
12345 6789
123456 789
1234567 89
12345678 9

123456789
123456789 
 123456789
1 2 3456789
1 234567890

输出

以下只有匹配。

1 23456789
12 3456789
123 456789
1234 56789
12345 6789
123456 789
1234567 89
12345678 9

说明

  • ^在行首处断言位置
  • (?=\d+ \d+$)确定以下内容的正向前瞻符合以下内容
    • \d+匹配一个或多个数字
    • 匹配文字空间
    • \d+匹配一个或多个数字
    • $断言行尾的位置
  • [\d ]{10}正确匹配任意数字或空格字符10次
  • $断言行尾的位置

答案 1 :(得分:1)

不要使用正则表达式。

  1. 检查长度为10。
  2. 计算数字和空格:

    int nSpaces = 0, nNumbers = 0;
    for (int i = 0; i < str.length(); ++i) {
      char c = str.charAt(i);
      if (c == ' ') nSpaces++;
      else if (c >= '0' && c <= '9') nNumbers++;
    }
    
  3. 检查有9个数字和1个空格。

    if (nSpaces == 1 && nNumbers == 9) { ... }