文本区域中每个单词的正则表达式最大长度 - JavaScript
Regex maxlength per word in textarea - JavaScript
我正在尝试一个正则表达式,它允许文本区域中每个单词不超过 17 个字符。我尝试了几个表达式,但直到现在都没有成功。
例如,我正在尝试取得这样的成功:
ADQQ213323DS2D33S
ADQQ213323DSDDSDA
73721GE276G2E1772
只允许数字和字母以及 space 或换行。
我试过的正则表达式:
^[a-zA-Z0-9\n]{17}$
HTML5 <textarea>
标记上的 pattern
属性不够强大,无法执行您需要执行的操作,因为您需要 s
标志,以便 ^
和 $
锚点也将匹配行的开始和结束。以下正则表达式还使用 i
标志来区分大小写:
/^\s*([a-z0-9]{1,17}(\s+|$))*$/is
^
匹配字符串的开头或一行的开头
\s*
匹配 0 个或多个白色 space 字符
([a-z0-9]{1,17}
匹配 1 到 17 个字母或数字
(\s+|$)
匹配一个或多个 space 或行尾
*
第 3 步到第 5 步重复 0 次或多次
$
匹配行尾或行尾或字符串尾。
以下代码片段为 textarea 安装了一个 onkeyup
处理程序,以便在 textarea 中出现每个新字符后,根据正则表达式测试内容,如果测试失败,则恢复之前的内容。
function setupField(field, re)
{
field.autocomplete = "off";
field.saveValue = field.value;
field.onkeyup = function() {
var v = field.value;
if (v === '' || re.test(v)) {
field.saveValue = v;
}
else {
field.value = field.saveValue;
}
};
}
function setup()
{
let regex = /^\s*([a-z0-9]{1,17}(\s+|$))*$/is;
setupField(document.f.ta, regex);
}
<html>
<body onload="setup();">
<form name="f">
Enter text:<br>
<textarea name="ta" rows="5" cols="60"></textarea>
</form>
</body>
</html>
我正在尝试一个正则表达式,它允许文本区域中每个单词不超过 17 个字符。我尝试了几个表达式,但直到现在都没有成功。
例如,我正在尝试取得这样的成功:
ADQQ213323DS2D33S
ADQQ213323DSDDSDA
73721GE276G2E1772
只允许数字和字母以及 space 或换行。
我试过的正则表达式:
^[a-zA-Z0-9\n]{17}$
HTML5 <textarea>
标记上的 pattern
属性不够强大,无法执行您需要执行的操作,因为您需要 s
标志,以便 ^
和 $
锚点也将匹配行的开始和结束。以下正则表达式还使用 i
标志来区分大小写:
/^\s*([a-z0-9]{1,17}(\s+|$))*$/is
^
匹配字符串的开头或一行的开头\s*
匹配 0 个或多个白色 space 字符([a-z0-9]{1,17}
匹配 1 到 17 个字母或数字(\s+|$)
匹配一个或多个 space 或行尾*
第 3 步到第 5 步重复 0 次或多次$
匹配行尾或行尾或字符串尾。
以下代码片段为 textarea 安装了一个 onkeyup
处理程序,以便在 textarea 中出现每个新字符后,根据正则表达式测试内容,如果测试失败,则恢复之前的内容。
function setupField(field, re)
{
field.autocomplete = "off";
field.saveValue = field.value;
field.onkeyup = function() {
var v = field.value;
if (v === '' || re.test(v)) {
field.saveValue = v;
}
else {
field.value = field.saveValue;
}
};
}
function setup()
{
let regex = /^\s*([a-z0-9]{1,17}(\s+|$))*$/is;
setupField(document.f.ta, regex);
}
<html>
<body onload="setup();">
<form name="f">
Enter text:<br>
<textarea name="ta" rows="5" cols="60"></textarea>
</form>
</body>
</html>