首页 > 解决方案 > 用于验证字数小于 100 的正则表达式

问题描述

我需要编写一个可以验证文本区域的正则表达式,这样用户就不能在多行中输入超过 100 个单词。我尝试过这样的事情

^(?:\b\w+\b[\s\r\n]*){0,100}$

但只要我输入一些特殊字符,如点 (.) 或逗号 (,),表达式就会失败。 在此处输入图像描述

标签: javascriptregex

解决方案


您可以使用

^\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


推荐阅读