Javascript正则表达式以限制每行的字符数

问题描述

我正在尝试创建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>