正则表达式接受一两个词

法比奥·席尔瓦(FábioSilva)

我需要一个RegEx来满足以下条件:

  • 1或2个字
  • 最小总长度为3
  • 总长度上限为50
  • 接受带重音符号
  • 没有数字是加号

可接受的字符串示例:

  • 卡门·加西亚(Karmen Garcia)
  • 若昂·佩德罗(JoãoPedro)
  • 维特尔
  • 最大iliaLóPezz
  • 纳达尔
  • loriPsiumPsisVõèrbizbbbbbbbbbb

不可接受的字符串的示例:

  • 乔尼·卡姆·瓦尼斯
  • 9卢卡斯P.us-kas1 Li1

我试过的

  • ^(?!。*?\ s {2})[A-Za-z] {3,50} $
  • ^([a-zA-Z] [a-zA-Z]){3.50} $
三万

您无法标记正则表达式的风格/编程语言/工具。但是,这是一种实现方式:

^(?=.{3,50}$)\p{L}*(\s\p{L}*)?$

它采用积极的前瞻性,以确保它介于3到50个字符之间。它简单地检查unicode字母类字符,可选地后面跟一个空格和更多字母,即一个或两个单词。

在regex101上看到它

编辑

OK-因此,对于JavaScript,您可以尝试

^(?=.{3,50}$)[^\s\d]*(\s[^\s\d]*)?$

基本上是相同的,只是匹配非空格和数字,而不是匹配unicode类。那不是完美的,但是一个简单的解决方案可以在大多数(拉丁)情况下使用。

请在regex101上查看此内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章