regex 只允许字母、空格和-Javascript正则表达式

yh2wf1be  于 2022-11-26  发布在  Java
关注(0)|答案(1)|浏览(142)

我想要一个正则表达式,只允许字母,一个空格后的单词,和-只有它不会接受两个单词,但一个空格后的单词允许。任何其他特殊字符是不允许的。例如

John -> true
John(space) -> true
John-Doe -> true
John-Doe(space) -> true
(space)John -> false
John Doe -> false

我正在试着用这个[a-zA-Z-][a-zA-Z -],但是不太好用。请帮忙。

tjvv9vkg

tjvv9vkg1#

如果您不希望在模式中使用连续连字符--,可以将模式编写为:

^[A-Z][a-z]+ ?(?:-[A-Z][a-z]+ ?)?$

说明

  • ^字符串开头
  • [A-Z][a-z]+ ?匹配一个字符A-Z和1+个字符a-z,后跟一个可选空格(如果要允许混合字符,则为[A-Za-z]+
  • (?:-[A-Z][a-z]+ ?)?选择性地以前置-比对与先前相同的模式
  • $字符串结束

请参阅regex demo
如果要允许所有混合字符在末尾带有可选空格:

^[A-Za-z-]+ ?$

Regex demo

相关问题