正则表达式在字符串中查找数字

时间:2009-04-03 13:02:10

标签: regex

我有一个字符串,可能包含也可能不包含4或5位数字。我正在寻找一个正则表达式,可以检测字符串是否确实具有这样的数字。

7 个答案:

答案 0 :(得分:18)

避免更长号码的万无一失的将是:

([^\d]|^)\d{4,5}([^\d]|$)

我假设你不想在千位之后允许逗号?如果你这样做:

([^\d]|^)\d{1,2},\d{3}([^\d]|$)

答案 1 :(得分:5)

也许

\d{4,5}

答案 2 :(得分:4)

\ d {4,5}还会找到包含6位数字的字符串 - 我不知道这是不是问题。你可能想做这样的事情:

([^ \ d] + | ^)\ d {4,5} [^ \ d]

答案 3 :(得分:1)

简单\d{4,5}就足够了。

答案 4 :(得分:0)

.NET?然后它是 [0-9]{4,5}

答案 5 :(得分:0)

您还可以使用否定的前瞻性和后视性来做到这一点:

 (?<!\d)\d{4,5}(?!\d)

寻找4-5位数字,该数字不能在其他数字的前面或后面。

这还有一个额外的优点,就是可以匹配字符串中的4-5位数字,例如asdsad1as12316asd,其中包含较短的数字。缺点是匹配字符串中的所有4-5位数字,而这可能不是必需的。

答案 6 :(得分:-2)

这是一个sudocode,请勿复制并粘贴它,它在检查字符串时是否有用,是否包含数字。

 if(str.matches(".*\\d+.*")) 
   print "contains numbers ";
 else 
   Print "doesn't contain numbers ";