我需要编写一个可以验证 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
提交
取消