![](/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.