我需要编写一个可以验证 textarea 的正则表达式,以便用户不能在多行中输入超过 100 个单词。我试过这样的事情^(?:\b\w+\b[\s\r\n]*){0,100}$但是只要我输入一些特殊字符,如点 (.) 或逗号 (,),表达式就会失败。
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
您可以使用
^\s*(?:\S+(?:\s+\S+){0,99}\s*)?$如果必须存在至少一个词,请删除外部(?:/)?可选的非捕获分组结构:
^\s*\S+(?:\s+\S+){0,99}\s*$细节:
^- 字符串的开始\s*- 0 个或多个空格\S+- 1 个或多个非空格(?:\s+\S+){0,99}- 0 到 99 次重复 1 个或多个空格,然后是 1 个或多个非空格\s*- 0 个或多个空格$- 字符串的结尾。
要仅计算由单词字符组成的单词,请将每个替换\s为\W并且将每个替换\S为\w。
饮歌长啸
TA贡献1951条经验 获得超3个赞
[编辑:正如评论中提到的,这个正则表达式有局限性。请使用已接受的答案中提供的解决方案。]
尝试这个:^(?:[\b\w\b;:,\.]+[\s\r\n]*){0,100}$
如果需要,请在您看到的位置添加其他可能的标点符号和非字母数字字符;:,\.。
编辑:当我用较少的单词进行测试时,在正则表达式中留下了 4 个。替换为问题中提到的 100 。
添加回答
举报
0/150
提交
取消
