具有最大行长度和最大总字符数的正则表达式

标签 regex line maxlength

我希望有一个正则表达式,它允许以下内容:

每行都有最大长度的文本,假设为 10,并且整个文本的总字符数有最大值(假设为 30)。

例如,这将是一些有效输入:

1)

1234567890

2)

123456789

1234567890

3)

12
123456

12456

这将是一些无效输入:

1)

12345678901

2)

1234567890

1234567890
1234567890

(请注意,由于换行,无效示例 2 超过了 30 个字符的限制)

到目前为止我得到的是这个正则表达式:^([^\r\n]{0,10}(\r?\n|$)){5}$(测试它here )
它几乎满足我的要求,除了最大输入是 5 行而不是 30 个字符。我已经在这个正则表达式上付出了很多努力,但现在我被卡住了。

我的 Regex 需要做哪些修改才能匹配总共 30 个字符?

最佳答案

在您的正则表达式中添加一个 look ahead:

^(?=[\s\S]{1,30}$)([^\r\n]{0,10}(\r?\n|$)){5}$

一个 perl 脚本:

my $re = qr~^(?=[\s\S]{1,30}$)([^\r\n]{0,10}(\r?\n|$)){5}$~;
my @data = (
'12
123456

12456',
'12345678901');
for my $str(@data) {
    say $str, ' : ',($str =~ $re ? 'OK' : 'KO');
}

输出:

12
123456

12456 : OK
12345678901 : KO

关于具有最大行长度和最大总字符数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320926/

相关文章:

Python 将换行符写入文件给出了 ਍一洀攀ऀ䄀爀碗碗猀琀ഀ 而不是换行符

angularjs - 在 angularJS 中,如何将鹅毛笔编辑器的文本字符限制限制为最多 5000 个字符?

php - 最快的 PHP 例程来匹配单词

android - 如何在 Android 中使用正则表达式

c# - 消除字符串中多余的字母? (例如 gooooooooood -> 好)

javascript - 在 IE8/9 中粘贴文本区域时,如何在其变为当前值之前访问剪贴板和当前光标位置?

javascript - parsley.js - 禁用最大长度验证

regex - 在 bash 中使用正则表达式查找文件

c++ - 修复线光栅化算法的近似值

android - 用动态数据创建 "L"形状曲线