Javascript 正则表达式限制每行字符数
Javascript Regex to Limit number of characters per line
我正在尝试创建一个 JS 正则表达式来限制 html 文本区域中每行的字符数。理想情况下,我更愿意将其作为 Javascript 正则表达式,因为它更易于用于我们的表单验证引擎。
我想创建一个正则表达式来验证一个字符串每行有 10 个字符,最多 3 行
我们的想法是验证如下字符串:
01234567890
a
b
此处第一行有 11 个字符,因此应拒绝整个字符串/
a
b
c
d
此文本有 4 行,因此也应被拒绝。
我已经尝试使用以下正则表达式,但没有按预期工作:
^((?:\n)?[^\n]{0,10}){0,3}$
关于我做错了什么的任何线索?
您可以使用
^.{0,10}(?:\r?\n.{0,10}){0,2}$
详情
^
- 字符串开头
.{0,10}
- 除换行符以外的零到十个字符
(?:\r?\n.{0,10}){0,2}
- 出现零次、一次或两次
\r?\n
- CRLF 或 LF 行结尾
.{0,10}
- 除换行符以外的零到十个字符
$
- 字符串结尾。
JavaScript:
const valid_rx = /^.{0,10}(?:\r?\n.{0,10}){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>
我正在尝试创建一个 JS 正则表达式来限制 html 文本区域中每行的字符数。理想情况下,我更愿意将其作为 Javascript 正则表达式,因为它更易于用于我们的表单验证引擎。
我想创建一个正则表达式来验证一个字符串每行有 10 个字符,最多 3 行
我们的想法是验证如下字符串:
01234567890
a
b
此处第一行有 11 个字符,因此应拒绝整个字符串/
a
b
c
d
此文本有 4 行,因此也应被拒绝。
我已经尝试使用以下正则表达式,但没有按预期工作:
^((?:\n)?[^\n]{0,10}){0,3}$
关于我做错了什么的任何线索?
您可以使用
^.{0,10}(?:\r?\n.{0,10}){0,2}$
详情
^
- 字符串开头.{0,10}
- 除换行符以外的零到十个字符(?:\r?\n.{0,10}){0,2}
- 出现零次、一次或两次\r?\n
- CRLF 或 LF 行结尾.{0,10}
- 除换行符以外的零到十个字符
$
- 字符串结尾。
JavaScript:
const valid_rx = /^.{0,10}(?:\r?\n.{0,10}){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>