REGEX 删除空格或破折号,如果它们在数字之间

REGEX remove spaces or dashes, if they are in between numbers

我正在修改现有的正则表达式以匹配信用卡号。有时,此类数字显示如下,用空格或破折号分隔数字块,如下所示;

3756-4564-2323-3435
3756 6432 3233 435

应对这些类型的匹配项进行预处理以删除那些特殊字符。通常数字块是3到4位数字。

谢谢

如@Ed 所述,在寻求解决方案之前,您应该尝试自己解决问题。否则,(\d{4})[ -](\(\d{4})[ -](\d{4})[ -](\d{3,4}) 不应该正确匹配数字,将每个部分存储在捕获组 1-4 中吗?

如果您需要处理没有分隔符的数字,只需使用 ? 限定符将它们设为可选:(\d{4})[ -]?(\(\d{4})[ -]?(\d{4})[ -]?(\d{3,4}).

在 bash 中,您可以删除任何非数字的内容:

$ var="3756-4564-2323-3435"
$ echo "${var//[^0-9]}"
3756456423233435