java - 如何使用正则表达式忽略电话号码上的国家/地区代码(带和不带 +)
问题描述
所以我正在构建一个带有电话号码注册的应用程序。在 OTP 页面中,我想显示带有分隔符的电话号码(由用户输入),其规则如下:(我来自印度尼西亚,所以我的国家代码是 +62)
+628101234567890 -> +62810-1234-5678-90
628101234567890 -> 62810-1234-5678-90
08101234567890 -> 0810-1234-5678-90
有人可以帮帮我吗?之前谢谢
编辑:电话号码的范围为 9-14 位
解决方案
您可以将String::replaceAll与^(.*)(....)(....)(..)$
匹配多个组的正则表达式一起使用,例如:
String[] phones = {"+628101234567890", "628101234567890", "08101234567890"};
for (String phone : phones) {
System.out.println(phone.replaceAll("(.*)(....)(....)(..)", "$1-$2-$3-$4"));
}
输出
+62810-1234-5678-90
62810-1234-5678-90
0810-1234-5678-90
你甚至可以使用这个正则表达式(.*)(\d{4})(\d{4})(\d{2})
细节
我想从头开始解释正则表达式:
(..)
最后一组匹配 2 个字符(....)(....)
两组 4 个字符(.*)
和其他角色
推荐阅读
- docker - 运行使用 Apple M1 芯片(基于 ARM 的系统)构建的容器时出现“exec 格式错误”
- flutter - 如何在颤动中配置容器以使用同一行或列中其他子项的相同高度
- javascript - 从时间戳中减去天数不适用于 MongoDB
- powerbi - 如何分析包含多个值的列的数据
- python - 如何在 pyspark rdd 映射中传递不可序列化的对象?
- javascript - 获取不带方括号的数组内的值
- kubernetes - Nginx 入口忽略 ConfigMap 和注解
- javascript - 如何在补间完成之前禁用代码执行?
- build - 如何将参数从命令行传递到 bazel 文件
- c - 如何将用户输入值放入 strncpy?