我正在尝试确保字符串包含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}$
中的任何陷阱?此外,即使它确实有用,它是最好的表达方式吗?
答案 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的新手,所以如果有错误(可能),请告诉我。