Java 删除电话号码中的括号、破折号和空格
我的电话号码是(123)456-7890。我正在使用Java 删除电话号码中的括号、破折号和空格,java,regex,Java,Regex,我的电话号码是(123)456-7890。我正在使用replaceAll方法从字符串中删除()和-以及空格。我试着跟着 String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim(); 但它不起作用。有什么解决方案吗?这应该可以: String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", ""); 在您的正则表达式中: \s应该是\\s 连字符应该是字符类中的第一个或最后一个,以避免
replaceAll
方法从字符串中删除()
和-
以及空格。我试着跟着
String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();
但它不起作用。有什么解决方案吗?这应该可以:
String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");
在您的正则表达式中:
应该是\s
\\s
- 连字符应该是字符类中的第一个或最后一个,以避免转义或用作
\\-
- 在
中使用量词[()\\s-]+
,通过减少替换次数来提高效率+
-
字符[]
表示字符范围,例如[a-z]
。但是,如果您希望使用文字-
,则字符范围在此处不起作用。逃避它
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim());
有两个主要原因,这并没有达到预期效果
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]").trim();
^^
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim();
^^
最后,您还可以在此处删除.trim()
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "");
如果您想要电话号码,请使用:
String phNo = "(123) 456-7890".replaceAll("\\D+", "");
此正则表达式将标记所有非数字的字符,并将其替换为空字符串
正则表达式:
\D+
- 匹配不是数字的单个字符<代码>\D
- 在一次和无限次之间,尽可能多次<代码>+
如果您使用的是Kotlin,则
mobileNo.replace(Regex(“[()\\-\\s]”),“”
显示您的代码和输出。“不工作”是什么意思?(无论如何,问题是-
在字符类中有意义,请使用“[-()\\s]”“
)这不适用于包含加号的电话号码,即使用+
作为国际呼叫前缀的电话号码。
String newStr = phoneNumber.replaceAll("[^0-9]", "");
System.out.println(newStr);