问题描述
我正在尝试创建JS正则表达式以限制html文本区域中每行的字符数。理想情况下,我希望将其作为Javascript Regex使用,因为它更易于用于我们的表单验证引擎。
我想创建一个正则表达式来验证字符串每行包含10个字符,最多3行
想法是验证类似于以下内容的字符串:
offline_access
此处的第一行包含11个字符,因此应拒绝整个字符串/
01234567890
a
b
此文本有4行,因此也应予以拒绝。
我已经尝试过以下正则表达式,但无法正常工作:
a
b
c
d
关于我在做什么的任何线索?
解决方法
您可以使用
^.{0,10}(?:\r?\n.{0,10}){0,2}$
请参见regex demo
详细信息
-
^
-字符串的开头 -
.{0,10}
-除换行符以外的零到十个字符 -
(?:\r?\n.{0,2}
-零,一或两次出现-
\r?\n
-CRLF或LF行结尾 -
.{0,10}
-除换行符以外的零到十个字符
-
-
$
-字符串的结尾。
JavaScript:
const valid_rx = /^.{0,2}$/;
const testFunc = () => {
if(!valid_rx.test(document.all.mytextarea.value))
{
console.log("Please use correct format.");
return false;
}
}
<textarea id="mytextarea" cols="50" rows="10">a
b
c
</textarea>
<button onclick="testFunc()">Click Me</button>