簡體   English   中英

使用RegEx檢測11個相鄰數字

[英]Detecting 11 adjacent digits with RegEx

如何使用RegEx檢測11個相鄰的(即11個數字,中間沒有其他字符)數字?

即它應該匹配asd 12345678901 asd 11AA12345678901as

不是 asd 123456789012 asd 11因為它有12個相鄰數字

我嘗試過(^[0-9])*(\\d{11})(^[0-9])*但它匹配asd 123456789012 asd 11

嘗試\\b\\d{11}\\b ,它指定11位數字周圍的單詞邊界,因此您不匹配12個長度的前11個字符。

您可以通過環顧四周來做到這一點:

(?<!\d)\d{11}(?!\d)

它會與正好是11個數字的序列匹配,並且可以確保在它的前面或后面沒有其他數字(但是可以是任何其他字符,例如字母,空格等)。

因此,這些字符串被認為包含匹配: jhgjad123456789011234567890112345678901skjdhkssdfjhsdf 12345678901 sdfjgj 2342 sdkfl=-=342_12345678901:}{]'

或另一種方式,無需環顧四周:

(?:\D|^)(\d{11})(?:\D|$)

11位數字將在捕獲組1中。

您可以在上面的正則表達式中使用IsMatch方法,以檢查字符串是否完全由11位數字組成。 您可以使用MatchMatches方法在字符串中查找一個或所有(分別)序列。

那會是

[^\d]+\d{11}[^\d]+
  1. 至少一位非數字
  2. 正好11位數
  3. 至少一位非數字

你快到了 只需確保序列前后有一個non-digit 因此,您需要在兩端插入沒有任何量詞的[^\\d]

您可以嘗試以下正則表達式:-

(?:.*?[^\d]|^)\d{11}(?:[^\d].*|$)

觀看演示:-http://www.myregextester.com/?r= 14ad3bb5

上面的正則表達式匹配以下字符串:-

asd 12345678901 asd 11
12341234234
af23412434353 saf  // 11 digits preceded by characters. I suppose you expect it to match.

並拒絕此字符串:-

asd 123456789012 asd 11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM