验证一个或多个不以特殊字符开头和结尾的字符串

时间:2017-09-14 12:26:43

标签: javascript regex

我有

/^[a-zA-Z][a-zA-Z '-]*[a-zA-Z]$/g

此正则表达式不允许字符串结束或以空格'-字符开头。

但是,如果我传递一个像a这样的字符串,它也会被检测为无效。

请建议如何传递一个字符串,而不是空格,'-

非常感谢。

a - 正确的 a - 不正确的 'a - 不正确的

1 个答案:

答案 0 :(得分:0)

你的正则表达式需要一个以字母开头的输入,然后有0 +字符,如字母,空格,单引号和连字符,然后是必填字母。用可选的非捕获组包裹模式的最后两部分:

/^[a-z](?:[a-z '-]*[a-z])?$/i
       ^^^^^^^^^^^^^^^^^^^

i不区分大小写的修饰符会使模式更短。

<强>详情

  • ^ - 字符串开头
  • [a-z] - ASCII字母
  • (?:[a-z '-]*[a-z])? - 1次或0次出现:
    • [a-z '-]* - 0 + ASCII字母,空格,'-
    • [a-z] - ASCII字母
  • $ - 字符串结束。