2012-04-24 243 views
1

我可以使用正則表達式來檢查,連續4個數字

\d\d\d\d[^\d] 

檢查,連續四個號碼?

例如,

411112行

455553行

1200003行

f44443行

g55553行

3333 OK

f4442沒有

45553號

f4444g4444沒有

f44444444沒有

+0

是倒數第二個例子是否正確?如果正則表達式*不匹配具有多個連續4位數字的字符串? – Daan 2012-04-24 11:11:46

回答

5

如果你想在字符串/\d\d\d\d//\d{4}/會找到任何系列的4位數字。如果您想查找一系列正好4位數字,請使用/[^\d]\d{4}[^\d]/。如果字符串應該只包含4個連續數字,請使用/^\d{4}$/

編輯:我想你想找到4個相同的數字,你需要一個反向引用。 /(\d)\1{3}/可能是你要找的。

編輯2:/(^|(.)(?!\2))(\d)\3{3}(?!\3)/將只匹配具有相同連續數字的4個字符串。

第一組匹配字符串或任何字符的開頭。然後,使用第一組來確保下列字符與第一個字符不匹配(如果有的話),這是負面預測。第三組匹配任何數字,然後重複3次以反向引用組3。最後,有一個預見,確保以下字符不匹配一系列連續的數字。

這種東西在JavaScript中很難做到,因爲你沒有類似前向引用和後視的東西。

+0

如果我想標記出該字符串的任何部分包含4個數字,例如411114或11114或41111 – 2012-04-24 08:59:52

+0

我想我明白你想要什麼,我編輯了我的答案。 – Daan 2012-04-24 09:05:21

+0

這按預期工作。謝謝。反向引用是什麼意思? – 2012-04-24 09:08:27

1

這應該符合四個數字(\d\d\d\d),其次是一個非數字字符([^\d])。如果您只想匹配任意四位數字,則應使用\d\d\d\d\d{4}。如果您想確保該字符串只包含四個連續的數字,請使用^\d{4}$^將指示正則表達式引擎在字符串的開始處開始匹配,而$將指示正則表達式引擎在字符串末尾停止匹配。

+0

^\ d {4} $似乎不匹配4個連續號碼 – 2012-04-24 08:57:15

+0

\ d {4}似乎允許51111115,我可以不允許這樣嗎? – 2012-04-24 08:58:29

+0

@ChinBoon:第一個正則表達式應該只能匹配4位數字。你確定你正在使用Javascript語法嗎?它應該是這樣的:'/^\ d {4} $ /' – npinti 2012-04-24 09:01:37

1

數字應該是字符串的一部分,還是隻需要四個數字?在後面的例子中,正則表達式應該是^\d{4}$^標誌着字符串的開始,$結束。這確保了,只有四個數字是有效的,並且在此之前或之後沒有任何數字。