![](/img/trans.png)
[英]Regex to check if string only contain digits and is 11 characters/digits long?
[英]Detecting 11 adjacent digits with RegEx
如何使用RegEx檢測11個相鄰的(即11個數字,中間沒有其他字符)數字?
即它應該匹配asd 12345678901 asd 11
和AA12345678901as
但不是 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個數字的序列匹配,並且可以確保在它的前面或后面沒有其他數字(但是可以是任何其他字符,例如字母,空格等)。
因此,這些字符串被認為包含匹配: jhgjad12345678901
, 12345678901
, 12345678901skjdhks
, sdfjhsdf 12345678901 sdfjgj 2342 sdkfl
, =-=342_12345678901:}{]'
或另一種方式,無需環顧四周:
(?:\D|^)(\d{11})(?:\D|$)
11位數字將在捕獲組1中。
您可以在上面的正則表達式中使用IsMatch
方法,以檢查字符串是否完全由11位數字組成。 您可以使用Match
或Matches
方法在字符串中查找一個或所有(分別)序列。
那會是
[^\d]+\d{11}[^\d]+
你快到了 只需確保序列前后有一個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.