问题
I have a phone number like (123) 456-7890. I am using the replaceAll method to remove () and - and spaces from the string. I tried following
String phNo= "(123) 456-7890".replaceAll("[()-\\s]").trim();
but it's not working. Any solution?
回答1:
This should work:
String phNo = "(123) 456-7890".replaceAll("[()\\s-]+", "");
In your regex:
\sshould be\\s- Hyphen should be first or last in character class to avoid escaping or use it as
\\- - Use quantifier
+as in[()\\s-]+to increase efficiency by minimizing # of replacements
回答2:
If you want the phone number then use:
String phNo = "(123) 456-7890".replaceAll("\\D+", "");
This regex will mark all characters that are not digits, and replace them with an empty string.
The regex: \D+
- Match a single character that is not a digit.
\D- Between one and unlimited times, as many times as possible.
+
- Between one and unlimited times, as many times as possible.
回答3:
The - character with brackets [] indicates a character range, e.g. [a-z]. However, the character range doesn't work here where you want a literal - to be used. Escape it.
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim());
回答4:
String newStr = phoneNumber.replaceAll("[^0-9]", "");
System.out.println(newStr);
Removes All Non-Digit Characters.
Java Regex - Tutorial
回答5:
There are two main reasons this does not work as expected.
Inside of a character class the hyphen has special meaning. You can place a hyphen as the first or last character of the class. In some regular expression implementations, you can also place directly after a range. If you place the hyphen anywhere else you need to escape it in order to add it to your class.
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]").trim(); ^^You are not supplying a replacement value which neither answer has pointed out to you.
String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "").trim(); ^^And finally, you can remove
.trim()here as well.String phNo = "(123) 456-7890".replaceAll("[()\\-\\s]", "");
回答6:
If you are using Kotlin than
mobileNo.replace(Regex("[()\\-\\s]"), "")
来源:https://stackoverflow.com/questions/25089362/remove-parentheses-dashes-and-spaces-from-phone-number