如何用RegExp替换多个模式



我有像+41 000 0000 000这样的电话号码,目前我只能用我的代码保留+的签名,但我还需要从这些号码中删除空格。

这是我当前的函数

String flattenPhoneNumber(String phoneStr) {
return phoneStr.replaceAllMapped(RegExp(r'^(+)|D'), (Match m) {
return m[0] == "+" ? "+" : "";
});
}

我如何删除空格以及保持我的+标志?

可以使用

String flattenPhoneNumber(String phoneStr) {
return phoneStr.replaceAll(RegExp(r'(?!^+)D'), '');
}

以下

print(flattenPhoneNumber("+41 000 0000 000"));

打印+410000000000

参见regex演示。(?!^+)D模式匹配字符串开头不等于+的任何非数字字符(D)。

您不需要regex,您可以使用replaceAll方法并将所有空格替换为":

String phoneStr = "+41 000 0000 000";
phoneStr = phoneStr.replaceAll(' ', '');
print(phoneStr); //+410000000000

已解决

我已经将我的代码更改为以下内容,它的工作原理如下:

String flattenPhoneNumber(String phoneStr) {
return phoneStr.replaceAll(' ', '').replaceAllMapped(RegExp(r'^(+)|D'), (Match m) {
return m[0] == "+" ? "+" : "";
});
}

最新更新