如果String没有字母数字字符,则正则表达式匹配

时间:2014-04-10 20:00:04

标签: java regex

我正在尝试提供一个正则表达式,该表达式匹配只包含非字母字符的字符串。

例如:

  • ".."将为true
  • ".dds!f"将为false
  • "sdjhgfsjd"将是false

我已经尝试str.matches("\\p{Punct}")但是这似乎只匹配单个功能字符。例如。 ".".matches("\\p{Punct}")将是真的,但"..".matches("\\p{Punct}")将是错误的。

我认为如果字符串中有任何字母数字字符,也可以匹配一个等效的问题。

5 个答案:

答案 0 :(得分:2)

这匹配不包含字母或数字的字符串:

^[^a-zA-Z0-9]*$

Regular expression visualization

Debuggex Demo

这匹配至少包含一个字母或数字的字符串:

^.*[a-zA-Z0-9].*$

Regular expression visualization

Debuggex Demo

请查看Stack Overflow Regular Expressions FAQ以获取更多有用的信息。

答案 1 :(得分:2)

似乎你可以使用

str.matches("\\P{Alnum}")

Alnum字母数字的缩写形式。 \P{Alnum}也是\p{Alnum}的否定。因此,如果string只包含一个或多个不是字母数字的字符,则此正则表达式将返回true。如果您还想接受空字符串,请将+更改为*

答案 2 :(得分:1)

我会尝试

\W

\W*

使用.matches

这是文档 - > Predefined Character Classes

答案 3 :(得分:1)

这应该有用。

"[^A-Za-z0-9]*"

答案 4 :(得分:1)

不是

[^A-Za-z0-9]*

工作?