1
我正在使用Java中的RegEx對電話號碼進行分類,並且發現連續重複的號碼。與RegEx不匹配的重複號碼
這是爲什麼正則表達式
9{4}([0-8]\1{2})([0-9]\1{3})[0-9]
不匹配該字符串
9999227771
我正在使用Java中的RegEx對電話號碼進行分類,並且發現連續重複的號碼。與RegEx不匹配的重複號碼
這是爲什麼正則表達式
9{4}([0-8]\1{2})([0-9]\1{3})[0-9]
不匹配該字符串
9999227771
在正則表達式
9{4}([0-8]\1{2})([0-9]\1{3})[0-9]
([0-8]\1{2})
這是第一捕獲組和內部的\1
- back-reference指本身不起作用。
在第二個捕獲組([0-9]\1{3})
中,您再次指的是第一個捕獲組。
此外,兩個反向引用都重複n
次,應該是n-1
,因爲第一個數與捕獲組相匹配。
這裏被修正的正則表達式
9{4}([0-8])\1([0-9])\2{2}[0-9]
9{4}
:重複9
四次。即9999([0-8])\1
:匹配給定範圍中的數字並再次匹配相同的數字,因此\1
。([0-9])\2{2}
:匹配一個數字,並按照它通過同一個數字的兩倍注意:要精確匹配的電話號碼,使用anchors ^
and $
。
因爲第一次回參考是指自己和不正確的中繼器計數。 ['9 {4}([0-8])\ 1 {1}([0-9])\ 2 {2} [0-9]'](https://www.regex101.com/r/ Rwvw3N/1) – Tushar
你比我快@Tushar把你的答案寫成答案:) –
'\ 1 {1}'是多餘的,只是'\ 1' .. – hwnd