我正在尝试提供一个正则表达式,该表达式匹配只包含非字母字符的字符串。
例如:
".."
将为true
".dds!f"
将为false
"sdjhgfsjd"
将是false
。我已经尝试str.matches("\\p{Punct}")
但是这似乎只匹配单个功能字符。例如。 ".".matches("\\p{Punct}")
将是真的,但"..".matches("\\p{Punct}")
将是错误的。
我认为如果字符串中有任何字母数字字符,也可以匹配一个等效的问题。
答案 0 :(得分:2)
这匹配不包含字母或数字的字符串:
^[^a-zA-Z0-9]*$
这匹配至少包含一个字母或数字的字符串:
^.*[a-zA-Z0-9].*$
请查看Stack Overflow Regular Expressions FAQ以获取更多有用的信息。
答案 1 :(得分:2)
似乎你可以使用
str.matches("\\P{Alnum}")
Alnum
是字母和数字的缩写形式。 \P{Alnum}
也是\p{Alnum}
的否定。因此,如果string只包含一个或多个不是字母数字的字符,则此正则表达式将返回true。如果您还想接受空字符串,请将+
更改为*
。
答案 2 :(得分:1)
答案 3 :(得分:1)
这应该有用。
"[^A-Za-z0-9]*"
答案 4 :(得分:1)
不是
[^A-Za-z0-9]*
工作?