2014-04-10 119 views
0

我想要拿出一个正则表达式匹配只有非字母字符的字符串。正则表达式匹配如果字符串没有字母符号

例如:

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

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

我想如果字符串中有任何字母数字字符,也会匹配一个等价的问题。

+0

难道你不能做一个匹配并放在前面的'!'吗?像'!stringVar.matches(“[A-Za-z0-9]”);' – AntonH

+1

首先,您需要添加'+'来匹配一个或多个'\ p {Punct}'。第二件事:关于空格(它们不是字母数字,但也不是'\ p {Punct}'),它们应该匹配还是不匹配?还应该使用英文以外的其他语言的字母,比如'źźć'匹配吗? – Pshemo

+0

谢谢Pshemo加入+似乎工作。我的意思是,如果我可以得到一个匹配任何字母数字字符的表达式,我可以简单地否定它,并获得解决我原来只有非字母数字字符的字符串匹配问题的解决方案。同样在我的特殊用例中,不应该有空格或其他语言字符。再次感谢。 – user1893354

回答

1

这应该工作。

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

并不仅仅

[^A-Za-z0-9]* 

工作?

2

看来你可以使用

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

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

相关问题