我提供以下正則表達式:^((?:\ + 27 | 27)| 0)(\ d {9})$ 爲南非的數字,並且只想返回true以+27或27或0開始。 27832227765,27838776654或0612323434.Java的正則表達式電話號碼
我試着使用: regexplanet.com
但都返回假不管我進入(即使是簡單的正則表達式)。
有人知道我在做什麼錯嗎?
我提供以下正則表達式:^((?:\ + 27 | 27)| 0)(\ d {9})$ 爲南非的數字,並且只想返回true以+27或27或0開始。 27832227765,27838776654或0612323434.Java的正則表達式電話號碼
我試着使用: regexplanet.com
但都返回假不管我進入(即使是簡單的正則表達式)。
有人知道我在做什麼錯嗎?
這應該工作,這裏是一個variant。 (我刪除^和$在這個例子中):
((?:\+27|27|0)(?:\d{9}))
在Java代碼中,你需要加倍反引號,並且在在線測試儀,反斜槓必須是單身。
另外,如果與String#matches
一起使用,則不需要使用字符串標記的開始和結束,因爲此方法需要完整的字符串匹配。
這裏是你的Java代碼如何看起來像:
String rex = "(\\+?27|0)(\\d{9})";
System.out.println("+27832227765".matches(rex)); // => true
System.out.println("27838776654".matches(rex)); // => true
System.out.println("0612323434".matches(rex)); // => true
如果使用String#find
,你將需要^
和$
錨,你在原來的正則表達式有。
注予縮短((?:\+27|27)|0)
到(\+?27|0)
作爲?
量詞裝置1或0的出現。額外的分組在這裏真的是多餘的。此外,如果你不使用捕獲文本,我建議開啓第一組到非捕獲(即(?:\+?27|0)
),然後卸下圓括號從\d{9}
:
String rex = "(?:\\+?27|0)\\d{9}";
這是http://tools.netshiftmedia.com/regexlibrary/#用於測試的表達式與+27或27或0開始,後長度的數字9
^((0)|(27)|(\+27))(\d{9})$
這是確定你的號碼:
你剛剛檢查過在線測試儀或代碼中的正則表達式嗎?在Java代碼中,'^(\\ +?27 | 0)(\\ d {9})$'應該可以工作。在測試儀中,'^(\ +?27 | 0)(\ d {9})$'應該可以工作。 –
對不起我的壞。好回答 –
我發佈了我的答案,請檢查。 –