正则表达式字符串验证

时间:2017-12-13 18:28:01

标签: java regex

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

First line \n
Second line \n

这是我得到的:

^(?!\s*$).+

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

2 个答案:

答案 0 :(得分:1)

代码

以下正则表达式匹配整行 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]*?匹配集合中不存在的任何字符(除回车符或换行符之外的任何字符),但是尽可能少(使 lazy 提高绩效 - 减少步骤)
  • \S匹配任何非空白字符
  • .*任意次数匹配任何字符(不包括换行符)
  • $断言行尾的位置

答案 1 :(得分:0)

尝试这种模式:

([\S ]*(\n)*)*