正则表达式:仅用连字符和空格匹配数字
我试图匹配带有连字符或空格(如银行帐号)连接的至少5个字符(对于整个字符串)的数字。正则表达式:仅用连字符和空格匹配数字
如
“12345-62436-223434”
“12345 6789 123232”
我也应该能够匹配
“ 123-4567-890“
我使用的是目前的格局是 (\d[\s-]*){5,}[\W]
,但我发现这些问题。
- 当我这样做,我至少有5位字符
-
我要更换匹配的数字后,所有的空格匹配这个,所以我只是想匹配的数字,而不是涂白空间和超时。
当我得到比赛时,我想要做的就是像下面这样掩盖它。
从 “12345-67890-11121” 到“***** - ***** - *****”
或
从“ “到‘***** ***** *****’
我唯一的问题是,我没有得到像什么,我想匹配。
谢谢!
这不符合问题 –
所要求的'-'这个很好,我只是做了一些修改\ d [\ d - ] {5,} \ d 尽管如此,非常感谢你! – Aaron
注意:这个正则表达式不能满足5位或更多位数的要求,请看这里:https://www.regex101.com/r/06C93P/1 –
这里的一个选择是采取您现有的模式,然后添加一个肯定的前瞻,它声称在该模式中存在七个或更多字符。假设帐号中有两个空格或破折号,这将保证有五位或更多位数。
您可以尝试使用下面的正则表达式:
^(?=.{7,}$)((\\d+ \\d+ \\d+)|(\\d+-\\d+-\\d+))$
测试代码:
String input = "123-4567-890";
boolean match = input.matches("^(?=.{7,}$)((\\d+ \\d+ \\d+)|(\\d+-\\d+-\\d+))$");
if (match) {
System.out.println("Match!");
}
如果您需要先捞出从较大的文件/源的帐户号码,然后做所以之后你可以应用上面的正则表达式逻辑。
whar regex的味道是这样的吗? javascript/python/c#???? –
@AbdulHameed我真的不明白,但我会在java上做这个。 – Aaron
有两个问题:1)有多少个数字分组,以及2)每个分组有多少个数字?有范围吗? –