Regex:确保文本区域输入中的换行次数最少


Regex: Ensure minimum number of line breaks in a textarea input

我目前有一个文本区域作为输入字段,并希望确保它有3行以上的独立行。

当我使用Yii框架时,我使用validate()方法对模型进行验证。

在Yii进行验证的情况下,我打算使用匹配功能来使用正则表达式检查输入是否有效。

目前我有:

    array('ingredients', 'match', 'pattern'=> '/('n|'r'n|'r){3,}/'),

这不起作用,但是如果我把3改成1,它就可以正常工作。

如何确保至少有3行使用regex?

三行是两个换行符,而不是三个。所以你要找的数字是2。

然后正则表达式首先匹配第一个。因此,应该使用'r'n作为第一个子模式,以防止将'n'r捕获为两个换行符的序列。

然后寻找重复的换行符。但您希望允许的不仅仅是空行。

也许这种模式将适合您的需求:

/^(?:.*(?:'r'n|'n|'r)){2,}/

它将允许三个或更多(空和非空)行。

您的正则表达式

/('n|'r'n|'r){3,}/

意味着有三个连续的换行符。允许介于两者之间的其他字符,例如

/(('n|'r'n|'r).*){3,}/

您还需要匹配这些行的内容:

array('ingredients', 'match', 'pattern'=> '/(.*('n|'r'n|'r)){3,}/'),