我正在修改现有的正则表达式以匹配信用卡号码。有时,这些数字如下所示,将数字块用空格或短划线分开,如下所示;
3756-4564-2323-3435
3756 6432 3233 435
应预处理这些类型的匹配以删除这些特殊字符。通常,数字块的数量为3到4位。
感谢
答案 0 :(得分:1)
在bash中你可以删除任何不是数字的东西:
$ var="3756-4564-2323-3435"
$ echo "${var//[^0-9]}"
3756456423233435
答案 1 :(得分:0)
正如@Ed所提到的,在寻求解决方案之前,你应该尝试自己解决问题。否则,不应该(\d{4})[ -](\(\d{4})[ -](\d{4})[ -](\d{3,4})
正确匹配数字,将每个部分存储在捕获组1-4中?
如果您需要处理尚未包含分隔符的数字,只需使用?
限定符将其设为可选:(\d{4})[ -]?(\(\d{4})[ -]?(\d{4})[ -]?(\d{3,4})
。