尝试编写一些正则表达式来验证字符串,其中不允许使用null和空字符串,但应允许使用字符+新行。我要验证的字符串如下:

First line \n
Second line \n


据我所知:

^(?!\s*$).+


由于新行,这使我的验证失败。有任何想法吗?我应该补充,我不能使用awk。

最佳答案



以下正则表达式与整行匹配。
See regex in use here

^[^\r\n]*?\S.*$


以下正则表达式与上面的正则表达式相同,只是它们仅用于验证目的(它们与整行不匹配,相反,它们只是确保其格式正确)。与上面的一个相比,使用这些正则表达式的好处是步骤数(性能)。在下面的regex101链接中,它们显示为28步,而上面的模式为34。
See regex in use here

^[^\r\n]*?\S


See regex in use here

^.*?\S




结果

输入值

First line \n
Second line \n



s


输出量

仅匹配

First line \n
Second line \n
s




说明


^在行首声明位置
[^\r\n]*?多次匹配集合中不存在的任何字符(除回车符或换行符以外的任何字符),但次数要尽可能少(使这种惰性提高性能,减少步骤)
\S匹配任何非空白字符
.*多次匹配任何字符(不包括换行符)
$在行尾声明位置

关于java - 正则表达式字符串验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47799853/

10-11 22:28
查看更多