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

时间:2009-11-06 11:41:37

标签: java regex

111111111 - Invalid
A121278237 - Invalid
7777777777 - Invalid

121263263 - Valid
111111112 - Valid

3 个答案:

答案 0 :(得分:12)

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

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

说明:

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

  2. 断言无法匹配刚刚匹配的同一位数的任意长度(> 1)的字符串,后跟字符串的结尾:(?!\1+$)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

根据蒂姆的回答,你可以通过添加或条款来消除“至少两位数”的要求。

^([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