用于名称验证的简单正则表达式

时间:2013-12-14 17:26:44

标签: regex

尝试对输入字段进行简单的名称验证。我不需要列出失败的内容和通过的内容。

我想做的是:

  • 整个输入可以是无(0)或最多32总
  • 如果输入了某些内容,则必须以字符
  • 开头
  • 一个字符后面的任何内容都可以包含[a-z' - 。,]
  • 的任意组合

最大值似乎不起作用,输入0和1字符失败。我总是对这些不好,因为他们不会为我提起太多。尝试了很多事情。

/^([a-z]+[a-z '-.,]*){0,32}$/i

1 个答案:

答案 0 :(得分:2)

正则表达式中的

+表示“重复前一个字符一次或多次”,*表示“重复前一个字符零次或多次”,{0, 32}表示“重复上一个字符”字符零到32次。“因此([a]+[b]*){0,32}重复重复,然后重复。

我认为你想要的正则表达式是

/^[a-z][a-z '-.,]{0,31}$|^$/i

解释here

  • 第一选择:^[a-z][a-z '-.,]{0,31}$
    • ^在字符串
    • 的开头断言位置
    • [a-z]匹配下面列表中的单个字符
      • a-z a和z之间范围内的单个字符(不区分大小写)
    • [a-z '-.,]{0,31}匹配下面列表中的单个字符
      • Quantifier:在0到31次之间,尽可能多次,根据需要回馈[贪婪]
      • a-z az之间的单个字符(不区分大小写)
      • <space>文字<space>
      • '-. '.
      • 之间的单个字符
      • ,文字,
    • $断言字符串末尾的位置
  • 第二种选择:^$
    • ^在字符串
    • 的开头断言位置
    • $断言字符串末尾的位置