从电话号码中删除括号,短划线和空格

时间:2014-08-01 22:05:09

标签: java regex

我的电话号码如(123)456-7890。我使用replaceAll方法从字符串中删除()-以及空格。我试过跟着

String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();

但它不起作用。任何解决方案?

6 个答案:

答案 0 :(得分:12)

这应该有效:

String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");

在你的正则表达式中:

  • \s应为\\s
  • 连字符应该是字符类中的第一个或最后一个,以避免转义或将其用作\\-
  • 使用+中的量词[()\\s-]+,通过最小化替换次数来提高效率

答案 1 :(得分:5)

如果您需要电话号码,请使用:

String phNo = "(123) 456-7890".replaceAll("\\D+", "");

此正则表达式将标记所有不是数字的字符,并将其替换为空字符串。


正则表达式:\D+

  • 匹配不是数字的单个字符。 \D
    • 在一次和无限次之间,尽可能多次。 +

答案 2 :(得分:3)

带括号-的{​​{1}}字符表示字符范围,例如[]。但是,字符范围在此处不起作用,您希望使用文字[a-z]。逃避它。

-

答案 3 :(得分:3)

  String newStr = phoneNumber.replaceAll("[^0-9]", "");
        System.out.println(newStr);

删除所有非数字字符。

adding bridging header in swift ios

答案 4 :(得分:2)

这有两个主要原因不能按预期工作。

  1. 在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放在范围之后。如果你将连字符放在任何其他地方,你需要将它转义为你的类。

    String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]").trim();
                                                  ^^
    
  2. 您没有提供任何答案都未指明的替代值。

    String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim();
                                                            ^^
    

    最后,您也可以在这里删除.trim()

    String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "");
    

答案 5 :(得分:0)

如果您使用的是Kotlin,那么

mobileNo.replace(Regex("[()\\-\\s]"), "")

相关问题