Java 删除电话号码中的括号、破折号和空格

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 连字符应该是字符类中的第一个或最后一个,以避免

我的电话号码是(123)456-7890。我正在使用
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);