提问者:小点点

使用Javascript查找正则表达式以验证HTML表单中输入的字符串


我需要用Javascript正则表达式验证HTML表单中输入的字符串。

可以有无限量的“单词”(字母和数字的任意组合-[a-zA-Z0-9],没有符号,下划线,破折号,连字符),用单个空格(“”,在最后一个“单词”之后不是强制的,或者在第一个“单词”之后,如果只有一个“单词”)分隔。 每个“单词”的最小长度为3个符号,最大长度为10个符号。

例如,可以是有效的字符串-“Bob BoB4U BOB4EVER 112233”。

存在以下任何一个“单词”都应该使字符串无效:bo,b@b,bobobobobobobobob-4-u,b_o_b。

已找到字符串长度的正则表达式:^(?=[\s\s]{3,10}$)[\s\s]*,尝试使用它。

我还尝试将前面的代码与^([a-zA-Z0-9]{3,10}\s?)*$之类的代码结合起来,但遗憾的是,没有成功。

更新。 上面给出的字符串和单词只是一个例子。 我不需要过滤掉那些特定的单词,它只是为了有效和无效项的可视化表示。


共1个答案

匿名用户

请允许我指出,允许组成单词及其长度的字符已经排除了'bo','b@b','bob-4-u'和'b_o_b'。 因此,我认为对剩下的'BOBOBOBOBOBOBOBOB'进行一个交替的正面展望和一个负面展望就足够了:

^(?=.*\b(?:bob|BoB4U|BOB4EVER|112233)\b)(?!.*\bbobobobobobobob\b)[a-zA-Z0-9]{3,10}(?: [a-zA-Z0-9]{3,10})*$

查看在线演示

  • ^-开始字符串Ancor.
  • (?=.*\b(?:Bobb4Ubob4Ever112233)\b)-除换行(.*),单词边界(\b)以及“Bobb4Ubob4Ever112233'与另一个单词边界之间的交替之外的任何字符的正面前视。
  • (?!.*\BBOBOBOBOBBOB\B)-否定前向检查除换行(.*),单词边界(\B)和带有另一个单词边界的'BOBOBOBOBOBOB'以外的任何字符。
  • [a-zA-Z0-9]{3,10}-任意大小写字母或数字,最多三个或10个。
  • (?:-打开非捕获组。
    • [a-zA-Z0-9]{3,10}-文字空格,后跟任意大小写字母或数字,最多三个或十个。
    • )*-关闭非捕获组并将其匹配零次或多次。

    “更新。上面给出的字符串和单词只是一个例子。我不需要过滤掉那些特定的单词,它只是用于有效和无效项的可视化表示。”

    在这种情况下,您也可以在负面前瞻中使用交替,例如:^(?=.*\b(?:Word1Word2Word3)\b)(?!.*\b(?:Word4Word5Word6)\b)[a-zA-Z0-9]{3,10}(?:[a-zA-Z0-9]{3,10})*$