Regex 正则表达式:-字符串可以包含任何字符,但不应为空
我的要求是 “字符串不应为空” 例如,字符串可以包含任意数量的字符或后跟任何特殊字符的字符串,但不得为空,例如,字符串可以包含“A、b、c”或“xyz123abc”或“12!@$#%&*()9”或“aa bb cc” 这就是我尝试过的 用于空白或空格的正则表达式:-Regex 正则表达式:-字符串可以包含任何字符,但不应为空,regex,grails,groovy,regex-negation,Regex,Grails,Groovy,Regex Negation,我的要求是 “字符串不应为空” 例如,字符串可以包含任意数量的字符或后跟任何特殊字符的字符串,但不得为空,例如,字符串可以包含“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
^\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
我一直在研究如何对regex^\s*$求反,以便它接受任何字符串,如“a,b,c”或“xyz”或“12!@$#%&*()9”
非常感谢您的帮助。\S
\S
匹配任何非空白字符
每个字符类都定义了自己的反类,因此对于\w
您有\w
对于\s
您有\s
对于\d
您有\d
等
您的正则表达式引擎可能不支持\S
。如果您使用的是[^\t\v]
如果您支持unicode(您应该这样做),那么您应该注意更多的空间类型
如果您和您的正则表达式引擎都支持unicode,并且您的正则表达式引擎不支持\S
,则您可能希望使用(如果您关心输入不同unicode空间类型的人):
以下正则表达式将确保字符串至少包含1个非空白字符
^(?!\s*$).+
注意:我不熟悉groovy。但是我可以想象,有一个本机函数(trim
,empty
,等等)比正则表达式更自然地测试这一点
如果是,则不需要正则表达式。在Groovy中,您可以使用以下方法:
groovy:000>“”。所有空格
=>正确
groovy:000>“\t\n”.allWhitespace
=>正确
groovy:000>“某物”。全部空白
=>错误
所以问!yourString.allWhitespace应该告诉你你的字符串不是空的还是空的:)对我来说,两种简单的表达方式是(都不需要锚定):
或
第一个假设您知道trim()的工作原理,第二个假设\S的含义。
当然
!s.allWhitespace
是完美的,如果你知道它存在的话为什么这个标记为“grails”?如果您正在寻找域类验证器,您可以只使用blank:false
。嗨,万能,\S+对我的示例“aa bb cc”中的字符串不起作用。它会检查字符串中是否有空格/空格。但我正在寻找类似于文本字段的内容,它永远不应该是blan,但文本字段中的字符串可以包含空格,如“aa bb cc“。任何建议都会很有帮助。您是否尝试匹配整个字符串?因为正则表达式不会尝试匹配整个字符串。是的,我尝试的是文本字段永远不应该为空,但文本字段中的字符串可以包含像“aa bb cc”这样的空格“。是的,但如果\S
与字符串中的任何位置匹配,则它不是空的。它不需要匹配整个字符串。\S对于“aa bb cc”失败。如果您能建议我对regex^\s*$进行否定,那将真正解决我的问题。
s =~ /\S+/
!s.allWhitespace