Javascript 用于验证字数小于100的正则表达式
我需要编写一个正则表达式来验证textarea,这样用户就不能在多行中键入超过100个单词。我试过这样的东西Javascript 用于验证字数小于100的正则表达式,javascript,regex,Javascript,Regex,我需要编写一个正则表达式来验证textarea,这样用户就不能在多行中键入超过100个单词。我试过这样的东西 ^(?:\b\w+\b[\s\r\n]*){0100}$ 但是,只要我键入一些特殊字符,如点(.)或逗号(,),表达式就失败了。 [编辑:如评论中所述,此正则表达式有局限性。请使用接受答案中提供的解决方案。] 试试这个:^(?:[\b\w\b;:,\。]+[\s\r\n]*){0100}$ 如果需要,在您看到的位置添加其他可能的标点符号和非字母数字字符 编辑:在正则表达式中留下4个,因为
^(?:\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*$
详情:
-字符串的开头^
-0个或更多空格\s*
-1个或多个非空白\S+
-0到99个重复的1个或多个空格,后跟1个或多个非空格(?:\s+\s+{0,99}
-0个或更多空格\s*
-字符串结束$
要仅计算由单词字符组成的单词,请将每个
\s
替换为\W
,将每个\s
替换为\W是否必须是正则表达式?执行字符串操作会更简单——在空格上拆分并计算块。它可能有点不准确,但对于大多数用例来说应该足够好了。我需要加入一些CMS,它只接受正则表达式。您可以使用\W
而不是[\s\r\n]
,这也将覆盖非空格非单词字符。您可以使用^\s*(?:\s+(?:\s+\s+{0,99}\s*))?$
不是下行表决器,但您知道字符类中的\b
表示退格
,点不需要在字符类中转义,\s
已经包括\r
和\n
?像$!”这样的字符呢“#@(){}…
谢谢。我喜欢这样的解释,现在甚至不介意你投反对票。