Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式:-字符串可以包含任何字符,但不应为空_Regex_Grails_Groovy_Regex Negation - Fatal编程技术网

Regex 正则表达式:-字符串可以包含任何字符,但不应为空

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

我的要求是

“字符串不应为空”

例如,字符串可以包含任意数量的字符或后跟任何特殊字符的字符串,但不得为空,例如,字符串可以包含“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
我一直在研究如何对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