正则表达式:确保textarea输入中的最小换行符数

时间:2012-01-06 08:45:10

标签: php regex yii preg-match line-breaks

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

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

通过Yii完成验证,我打算使用匹配功能来检查输入有效的正则表达式。

目前我有:

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

哪个不起作用,但是如果我将3更改为1则它可以正常工作。

如何确保使用正则表达式至少有3行?

3 个答案:

答案 0 :(得分:1)

你的正则表达式

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

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

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

答案 1 :(得分:1)

三行是两次休息,而不是三次。所以你要找的数字是2。

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

然后你会寻找重复的换行符。但是你想要的不仅仅是空行。

这种模式可能符合您的需求:

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

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

答案 2 :(得分:0)

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

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