正则表达式不为空

jaa*_*ana 14 java regex

我需要一个Java正则表达式,它检查给定的String不是Empty.但是,如果用户在输入的开头意外地给出了空格,那么表达式应该是无意义的,但是稍后允许空格.表达式应该允许斯堪的纳维亚字母,Ä,Ö等,包括小写和大写.

我用Google搜索了,但似乎没有什么能满足我的需求.请帮忙.

cod*_*ict 21

您还可以使用正向前瞻断言断言该字符串至少包含一个非空白字符:

^(?=\s*\S).*$
Run Code Online (Sandbox Code Playgroud)

在Java中你需要

"^(?=\\s*\\S).*$"
Run Code Online (Sandbox Code Playgroud)

  • +1因为有时使用正则表达式比使用方法更容易.例如:@Pattern用于在无法使用Hibernate的@NotBlank时进行JSR-303验证.好工作优化 (2认同)

小智 11

对于非空字符串使用.+.


sjn*_*ngm 5

这应该有效:

/^\s*\S.*$/
Run Code Online (Sandbox Code Playgroud)

但正则表达式可能不是最佳解决方案,这取决于您还有什么想法。

  • @jaana:这个答案是 JavaScript 语法;在 Java 中,它是 `"^\\s*\\S.*$"`。 (3认同)

The*_*aul 4

^\s*\S
Run Code Online (Sandbox Code Playgroud)

(跳过开头的任何空格,然后匹配非空格的内容)

  • 事实上,即使是裸露的 \S 也足够了。您在开始时不需要任何锚点,它要么在某处包含非空白,要么不包含。 (3认同)