我需要一个正则表达式来验证一个9位数,其间有一个空格
到目前为止,我已经尝试了
^([0-9]{0-9})\s{1}$
答案 0 :(得分:3)
^(?=\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)
不要使用正则表达式。
计算数字和空格:
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++;
}
检查有9个数字和1个空格。
if (nSpaces == 1 && nNumbers == 9) { ... }