正则表达式匹配每行的行数和字符数

时间:2014-01-30 05:17:06

标签: java javascript regex

我正在尝试确保字符串包含0到3行,并且对于存在的给定行,它包含0到100个字符。它需要是JavaScript和Java的有效表达式。像很多人在做RegEx我就是从互联网上的各个地方复制的。

向后工作我认为^.{0,100}$会让我看到“行包含0到100个字符”,但尝试将其分组为(^.{0,100}$){0,3}不起作用。

新行字符可能是我的问题的一部分,所以我最终得到像.{0,100}(?:\n.{0,100}){0,2}这样的东西试图说“0到100个字符的行,可选地后跟0到2个新行的实例,0再多100个字符“,但也失败了。

到目前为止,我从其他人那里获得了这些表达。使用在线测试工具,我终于将它们联系在一起:^.{0,100}(?:(?:\r\n|[\r\n]).{0,100}){0,2}$似乎有效。

所以,我的问题是,鉴于我所追求的是什么,我是否遗漏了^.{0,100}(?:(?:\r\n|[\r\n]).{0,100}){0,2}$中的任何陷阱?此外,即使它确实有用,它是最好的表达方式吗?

2 个答案:

答案 0 :(得分:3)

我认为你的工作会很好。如果您愿意,可以使换行符部分更紧凑,如果您使用^,则不需要$matches()

String regex = ".{0,100}(?:[\r\n]+.{0,100}){0,2}";

修改

经过一些更多的想法,我意识到上面的换行符建议将匹配4行(或更多行),只要其中一行是空的。所以,我们回到你建议的例子。哦,至少可以省略开始和结束字符。

String regex = ".{0,100}(?:(?:\r\n|[\r\n]).{0,100}){0,2}";

答案 1 :(得分:1)

我对正则表达式不是很擅长,但这会有用吗?

^.{0,100}\n?(.{0,100}\n)?.{0,100}?$

我仍然是reg exp的新手,所以如果有错误(可能),请告诉我。