匹配除特定字符之外的所有字符的正确语法是什么.
例如,我想匹配除字母[A-Z] [a-z]和数字之外的所有内容[0-9].
我有
string.matches("[^[A-Z][a-z][0-9]]")
Run Code Online (Sandbox Code Playgroud)
这是不正确的?
如果你想匹配除字母之外的任何东西,你应该看看Unicode属性.
\p{L} 是任何语言的任何一种信件
使用大写的"P"代替它是否定,所以\P{L}匹配任何不是字母的东西.
\d或者\p{Nd}是匹配的数字
因此,您在现代Unicode样式中的表达式将如下所示
使用否定的字符类
[^\p{L}\p{Nd}]
Run Code Online (Sandbox Code Playgroud)
或否定的财产
[\P{L}\P{Nd}]
Run Code Online (Sandbox Code Playgroud)
接下来的事情是,matches()将表达式与完整字符串匹配,因此表达式仅在字符串中只有一个字符时才为真.所以你需要添加一个量词:
string.matches("[^\p{L}\p{Nd}]+")
Run Code Online (Sandbox Code Playgroud)
当完整字符串只有非字母数字和至少其中一个时,返回true.
| 归档时间: |
|
| 查看次数: |
33859 次 |
| 最近记录: |