Javascript 用于验证字数小于100的正则表达式

Javascript 用于验证字数小于100的正则表达式,javascript,regex,Javascript,Regex,我需要编写一个正则表达式来验证textarea,这样用户就不能在多行中键入超过100个单词。我试过这样的东西 ^(?:\b\w+\b[\s\r\n]*){0100}$ 但是,只要我键入一些特殊字符,如点(.)或逗号(,),表达式就失败了。 [编辑:如评论中所述,此正则表达式有局限性。请使用接受答案中提供的解决方案。] 试试这个:^(?:[\b\w\b;:,\。]+[\s\r\n]*){0100}$ 如果需要,在您看到的位置添加其他可能的标点符号和非字母数字字符 编辑:在正则表达式中留下4个,因为

我需要编写一个正则表达式来验证textarea,这样用户就不能在多行中键入超过100个单词。我试过这样的东西

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

但是,只要我键入一些特殊字符,如点(.)或逗号(,),表达式就失败了。

[编辑:如评论中所述,此正则表达式有局限性。请使用接受答案中提供的解决方案。]

试试这个:
^(?:[\b\w\b;:,\。]+[\s\r\n]*){0100}$

如果需要,在您看到的位置添加其他可能的标点符号和非字母数字字符

编辑:在正则表达式中留下4个,因为我正在用较少的单词进行测试。替换为问题中提到的100。

您可以使用

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

是否必须是正则表达式?执行字符串操作会更简单——在空格上拆分并计算块。它可能有点不准确,但对于大多数用例来说应该足够好了。我需要加入一些CMS,它只接受正则表达式。您可以使用
\W
而不是
[\s\r\n]
,这也将覆盖非空格非单词字符。您可以使用
^\s*(?:\s+(?:\s+\s+{0,99}\s*))?$
不是下行表决器,但您知道字符类中的
\b
表示
退格
,点不需要在字符类中转义,
\s
已经包括
\r
\n
?像
$!”这样的字符呢“#@(){}…
谢谢。我喜欢这样的解释,现在甚至不介意你投反对票。