我正在嘗試讓用戶可以輸入 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
提交
取消