从电话号码中删除括号,短划线和空格
我有一个电话号码,如(123)456-7890。 我正在使用replaceAll
方法从字符串中删除()
和-
以及空格。 我试过跟随
String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();
但它不起作用。 有解决方案吗
这应该工作:
String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");
在你的正则表达式:
-
\s
应该是\\s
- 连字符应该是字符类中的第一个或最后一个,以避免转义或将其用作
\\-
- 在
[()\\s-]+
使用量词+
,通过最小化替换次数来提高效率
如果您需要电话号码,请使用:
String phNo = "(123) 456-7890".replaceAll("\\D+", "");
此正则表达式将标记所有不是数字的字符,并将其替换为空字符串。
正则表达式: \D+
- 匹配不是数字的单个字符。
\D
- 在一次和无限次之间,尽可能多次。
+
- 在一次和无限次之间,尽可能多次。
括号[]
的-
字符表示字符范围,例如[az]
。 但是,字符范围在此处不起作用,您需要使用文字。 逃避它。
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim());
这有两个主要原因不能按预期工作。
-
在字符类中,连字符具有特殊含义 。 您可以将连字符作为类的第一个或最后一个字符。 在一些正则表达式实现中,您也可以直接放在一个范围之后。 如果您将连字符放在任何其他位置,您需要将其转义为将其添加到您的class级。
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 newStr = phoneNumber.replaceAll("[^0-9]", ""); System.out.println(newStr);
删除所有非数字字符。
Java Regex – 教程
如果你使用的是Kotlin
mobileNo.replace(Regex("[()\\-\\s]"), "")