我有一个字符串,可能包含也可能不包含4或5位数字。我正在寻找一个正则表达式,可以检测字符串是否确实具有这样的数字。
答案 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 ";