Java 代码中看似毫无意义的正则表达式

Java 代码中看似毫无意义的正则表达式,java,regex,hibernate,Java,Regex,Hibernate,因此,我最近继承了一些代码,通过查看代码,我发现一个regex似乎允许几乎任何字符串。正则表达式是: ^(?=\\s*\\s)。*$ 这是一个将被保存到数据库的字段,所以我唯一的想法是,它可能会执行一些基本的SQL注入保护。思想?据我所知,我们正在检查是否有行的开始\结束,我们对任何空白字符或非空白字符都有正向展望,并且我们允许所有字符 ^(?=\\s*\\S).*$ 这只是说不能有一个空字符串。必须有一个非空格字符。因此像'这样的字符串不会通过,也不会通过' 这类似于^.*\S.*$look

因此,我最近继承了一些代码,通过查看代码,我发现一个regex似乎允许几乎任何字符串。正则表达式是:

^(?=\\s*\\s)。*$

这是一个将被保存到数据库的字段,所以我唯一的想法是,它可能会执行一些基本的SQL注入保护。思想?据我所知,我们正在检查是否有行的开始\结束,我们对任何空白字符或非空白字符都有正向展望,并且我们允许所有字符

^(?=\\s*\\S).*$
这只是说不能有一个
空字符串
。必须有一个非空格字符。因此像
'
这样的字符串不会通过,也不会通过
'


这类似于
^.*\S.*$
lookaheads
非常昂贵,因此您可以使用它。

是的。如果与
Matcher.matches()
一起使用,它将更清楚地写为
“*\\S.*”
,或者简单地写为
“\\S”
Matcher.find()
一起使用。如何处理正则表达式?因为第一个非空白字符(包括前缀空白)被排除在匹配之外,这可能是正则表达式的另一点?