我试图确保一个字符串包含 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 中的任何陷阱}$
给出我想要的?此外,即使这确实有效,它是最好的表达方式吗?
最佳答案
我认为你所拥有的会很好用。如果你愿意,你可以让换行部分更紧凑一些,你不需要 ^
和 $
如果您使用 matches()
:
String regex = ".{0,100}(?:[\r\n]+.{0,100}){0,2}";
编辑
经过更多思考后,我意识到上面的换行建议将匹配 4(或更多)行,只要其中几行是空的。所以,我们回到你建议的例子。哦,好吧,至少开始和结束字符可以省略。
String regex = ".{0,100}(?:(?:\r\n|[\r\n]).{0,100}){0,2}";
关于java - 用于匹配行数和每行字符数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21448378/