[英]Regex maxlength per word in textarea - JavaScript
我正在尝试一个正则表达式,它允许 textarea 中每个单词不超过 17 个字符。 我尝试了几种表达方式,但直到现在都没有成功。
例如,我试图成功这样的事情:
ADQQ213323DS2D33S
ADQQ213323DSDDSDA
73721GE276G2E1772
只应允许使用数字和字母以及空格或换行符。
我尝试过的正则表达式:
^[a-zA-Z0-9\n]{17}$
HTML5 <textarea>
标签上的pattern
属性不足以完成您需要做的事情,因为您需要s
标志,以便^
和$
锚点也将匹配行的开头和结尾。 以下正则表达式也使用i
标志来区分大小写:
/^\s*([a-z0-9]{1,17}(\s+|$))*$/is
^
匹配字符串的开头或行的开头\\s*
匹配 0 个或多个空白字符([a-z0-9]{1,17}
匹配 1 到 17 个字母或数字(\\s+|$)
匹配一个或多个空格或行尾*
步骤 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.