我的要求是
“字符串不应为空或空”
例如,一个字符串可以包含任意数量的字符或字符串,后跟任何特殊字符,但不应该为空,例如,字符串可以包含“a,b,c”或“xyz123abc”或“12!@ $#%& *()9“或”aa bb cc“
所以,这就是我的尝试 空白或空格的正则表达式: -
^\s*$
^ is the beginning of string anchor
$ is the end of string anchor
\s is the whitespace character class
* is zero-or-more repetition of
我坚持如何否定正则表达式^ \ s * $以便它接受任何字符串,如“a,b,c”或“xyz”或“12!@ $#%& *()9 “
感谢任何帮助。
答案 0 :(得分:3)
不需要正则表达式。在Groovy中,您使用isAllWhitespace
方法:
groovy:000> "".allWhitespace
===> true
groovy:000> " \t\n ".allWhitespace
===> true
groovy:000> "something".allWhitespace
===> false
因此要求!yourString.allWhitespace
告诉您字符串是否为空或空白:)
答案 1 :(得分:1)
\S
\S
匹配任何非空格字符
每个角色类都有自己定义的反类,所以\w
\W
\s
\S
\d
\D
\S
[^ \t\v]
\S
{1}}等等。
http://www.regular-expressions.info/charclass.html
您的正则表达式引擎可能不支持[^ \r\f\t\v\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF]
。如果是这种情况,如果您支持unicode(您应该使用),则使用{{1}},您应该注意更多的空间类型。
如果您的正则表达式引擎和您支持unicode并且您的正则表达式引擎不支持{{1}},那么您可能希望使用(如果您关心人们输入不同的unicode空间类型):
{{1}}
http://www.cs.tut.fi/~jkorpela/chars/spaces.html
http://en.wikipedia.org/wiki/Whitespace_character#Unicode
答案 2 :(得分:1)
对我来说,表达它的两种简单方法是(都不需要锚定):
s.trim() =~ /.+/
或
s =~ /\S+/
第一个假设您知道trim()如何工作,第二个假设是\ S的含义。 当然
!s.allWhitespace
如果你知道它存在,是完美的
答案 3 :(得分:0)
以下正则表达式将确保字符串包含至少1个非空白字符。
^(?!\s*$).+
注意:我不熟悉groovy。但我认为有一个本机函数(trim
,empty
等)比正则表达式更自然地测试它。
答案 4 :(得分:0)
这是grails域类吗?