REGEX删除空格或短划线,如果它们在数字之间

时间:2016-06-05 02:24:19

标签: regex bash credit-card

我正在修改现有的正则表达式以匹配信用卡号码。有时,这些数字如下所示,将数字块用空格或短划线分开,如下所示;

3756-4564-2323-3435
3756 6432 3233 435

应预处理这些类型的匹配以删除这些特殊字符。通常,数字块的数量为3到4位。

感谢

2 个答案:

答案 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})