2016-08-23 84 views
0

我遇到了正則表達式的問題,它匹配除中間的2位數字之外的所有內容。正則表達式匹配除2位數以外的所有內容

實施例:

輸入:40442**75**22123456

匹配度:75

允許:4044273xxxxxxxx4044255xxxx等。

我的表達式是:[0-9]{5}[0-68-9]{1}[0-46-9]{1}[0-9]{8}

它適用於完全匹配,但在例外情況下失敗。

+0

你是什麼意思它沒有異常的情況?這些數字是否符合預先確定的要求,還是至少始終處於相同的位置?您決定要刪除哪些數字的標準是什麼? – Harrison

+1

除了中間的東西外,你無法匹配所有東西。你需要得到前5個,然後將該值與最後8個數字連接起來?用'^(\ d {5})\ d {2}(\ d {8})$'捕獲這兩個組並將它們連接起來。 –

+0

您正在使用哪種正則表達式引擎,並且您在該引擎上設置了哪些修飾符? –

回答

0

如果您只想在該位置使用75,請使用替換。
將您所有的例外置於交替狀態。會有重疊,
但會有一些不允許的。
如果這種情況下不允許很少,那麼使用負面斷言的一般
範圍,以禁止一些。即[0-9]{2} (?<!52|74)

[0-9]{5}(?:[0-68-9][0-46-9]|75)[0-9]{8}

擴展

[0-9]{5} 
(?: 
     [0-68-9] 
     [0-46-9] 
    | 75 
    | [0-9]5 
    | etc... 
) 
[0-9]{8} 
+0

它不適用於這種模式404427422123456,它應該失敗,因爲它應該匹配除75之外的所有內容。 – dman

+0

在這裏你去'[0-9] {5}(?! 75)[0-9] {2} [0- 9] {8}'除75之外的所有東西。 – sln

+0

謝謝Sln,它的工作正是我所期待的。 – dman

相關問題