如何替换字符串中不符合条件的所有字符。我在使用NOT运算符时遇到了麻烦。
具体来说,我正在尝试删除所有不是数字的字符,到目前为止我已经尝试过了:
String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", ""); // produces: "--"
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"
答案 0 :(得分:43)
解释:字符类开头的^将否定该类但它必须在类中才能工作。字符类外部的相同字符是字符串/行开始的锚点。
你可以试试这个:
"[^0-9]"
答案 1 :(得分:27)
这是一个快速的字符类定义备忘单,以及它如何与一些正则表达式元字符交互。
[aeiou]
- 只匹配一个小写元音[^aeiou]
- 匹配不是小写元音的字符(否定字符类)^[aeiou]
- 匹配固定在该行开头的小写元音[^^]
- 匹配非插入符号/ '^'
^[^^]
- 匹配行尾^[^.].
- 在行的开头匹配除文字句点之外的任何内容,后跟“任意”字符[a-z]
- 只匹配'a'
到'z'
的范围中的一个字符(即所有小写字母)[az-]
- 匹配'a'
,'z'
或'-'
(文字破折号)[.*]*
- 匹配点和星号的连续序列(可能是空的)[aeiou]{3}
- 匹配3个连续的小写元音(所有不一定是相同的元音)\[aeiou\]
- 匹配字符串"[aeiou]"