我正在尝试让用户可以输入 07XXXXXXXXX 或 07XXX XXXXXX,两者都应该有效,但我的正则表达式似乎无法正常工作我尝试添加 \\d、\\s、\\w 但这些都不起作用我的代码是://The space should be between {3} and [0-9]while (!Scanner.hasNext("07[0-9]{9} | 07[0-9]{3} [0-9]{6}")) { System.out.println("\nThe mobile number you have entered is not valid.\nIt should start with 07 and should contain 9 additional digits."); Scanner.nextLine();} //end while该程序应该接受 07XXXXXXXXX 和 07XXX XXXXXX,但是当我尝试包含空格时,它不接受任何一个选项。“07[0-9]{9}”本身适用于 07XXXXXXXXX,但是当我添加“| 07[0-9]{3} [0-9]{6}”时,这两个选项都不起作用。
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
如果空格后面带有 ? 问号表示空间的“零个或一个”
07[0-9]{3} ?[0-9]{6}
您还可以使用括号中的数字对来给出范围:
07[0-9]{3} {0,1}[0-9]{6}
如果您打算允许使用连字符等其他字符,您可以为它们创建一个字符类。这允许空格、连字符或点:
07[0-9]{3}[-. ]{0,1}[0-9]{6} 07[0-9]{3}[-. ]?[0-9]{6}
我建议您将连字符放在字符类的前面,因为它可以表示“范围”,就像 0-9 一样。把它放在第一位并没有定义范围。另外,句点通常表示“任何字符”,但在字符类中它失去了这种特殊含义,实际上只是一个句点
添加回答
举报
0/150
提交
取消