繁体   English   中英

检查字符串是否仅包含数字且使用REGEX的数字是否相同?

[英]Check if a String only contains digits and the digits are not the same using REGEX?

111111111 - Invalid
A121278237 - Invalid
7777777777 - Invalid

121263263 - Valid
111111112 - Valid
^([0-9])(?!\1+$)[0-9]+$

应该管用。 它需要一个至少两位数的字符串才能成功匹配。

说明:

  1. 匹配一个数字并将其捕获到反向引用#1: ([0-9])

  2. 断言不可能匹配刚刚匹配的相同数字的任意长度(> 1)的字符串,然后是字符串的结尾: (?!\\1+$)

  3. 然后匹配任何数字字符串,直到字符串结尾: [0-9]+$

编辑:当然,在Java中你需要转义字符串( "\\\\" )中的反斜杠。

  1. 取一个[0-9]正则表达式并丢弃不仅包含数字的字符串。
  2. 取第一个字符,并将其用作正则表达式[C] +,以查看该字符串是否包含任何其他数字。

根据Tim的回答,您可以通过添加or子句来消除“至少两位数”的要求。

^([0-9])(?!\1+$)[0-9]+$|^[0-9]$

例如:

String regex = "^([0-9])(?!\\1+$)[0-9]+$|^[0-9]$";
boolean a = "12".matches(regex);
System.out.println("a: " + a);
boolean b = "11".matches(regex);
System.out.println("b: " + b);
boolean c = "1".matches(regex);
System.out.println("c: " + c);

回报

a: true
b: false
c: true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM