我目前有一个文本区域作为输入字段,并希望确保它有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,}/'),