如何在Java的RegEx中包含空格?

时间:2019-10-05 21:25:29

标签: java regex java.util.scanner

我正在尝试这样做,以便用户可以输入07XXXXXXXXX或07XXX XXXXXX,两者都可以使用,但是我的RegEx似乎不能正常使用

我尝试添加\\ 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 个答案:

答案 0 :(得分:1)

如果在空格后面加上??问号将表示“零或其中之一”

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一样代表“范围”。首先,它没有定义范围。同样,句点通常也意味着“任何字符”,但是在字符类中,它失去了这种特殊的含义,实际上只是一个句点


enter image description here

enter image description here