1行あたりの文字数を制限するJavascript正規表現
Aug 26 2020
JS正規表現を作成して、HTMLテキスト領域の1行あたりの文字数を制限しようとしています。理想的には、フォーム検証エンジンで使用する方が簡単なので、Javascript正規表現として使用することをお勧めします。
文字列が1行あたり10文字、最大3行であることを検証する正規表現を作成したいと思います。
アイデアは、次のような文字列を検証することです。
01234567890
a
b
ここの最初の行は11文字なので、文字列全体を拒否する必要があります/
a
b
c
d
このテキストは4行あるため、拒否する必要があります。
次の正規表現を試しましたが、期待どおりに機能しません。
^((?:\n)?[^\n]{0,10}){0,3}$
私が間違っていることについての手がかりはありますか?
回答
1 WiktorStribiżew Aug 26 2020 at 19:32
あなたが使用することができます
^.{0,10}(?:\r?\n.{0,10}){0,2}$
正規表現のデモを見る
詳細
^-文字列の開始.{0,10}-改行文字以外の0から10文字(?:\r?\n.{0,10}){0,2}-ゼロ、1つまたは2つの発生\r?\n-CRLFまたはLF行末.{0,10}-改行文字以外の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>