gpt4 book ai didi

javascript - 用于匹配单个名字字符串或带有一个空格和一个连字符的名字和姓氏字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-02 17:46:30 25 4
gpt4 key购买 nike

正则表达式,用于匹配单个名字字符串或带有一个空格和一个连字符的名字和姓氏字符串。

有效匹配

  1. 马蒂亚斯·达拉斯
  2. 马丁·路德
  3. 赫克托香肠
  4. 马蒂亚斯
  5. 约翰-保罗·马蒂亚斯
  6. 约翰·S
  7. 约翰·约翰
  8. k jhon-m
  9. J-m k
  10. k j-m

无效匹配

  1. 马蒂亚斯·达拉斯
  2. 马蒂亚斯-德拉斯
  3. 赫克托 - 香肠
  4. Hector Sau K
  5. 赫克托-修-K
  6. 赫克托香肠-
  7. a-aaa-a
  8. a-aaaa
  9. 让-保罗·西蒙斯-贝克特
  10. a-aa-a
  11. 一个一个

最佳答案

此模式将正确匹配您提供的示例数据(我假设您实际上只想允许空格 [],而不是所有空格 [\s ],其中还包括制表符、换行符等):

/^[a-z]+( [a-z][a-z-]+||-[a-z]+)?$/i

不过,我想知道您的示例数据中是否还遗漏了其他一些情况,例如:

  • John-Paul Mathias (有效,但会失败?)
  • 赫克托香肠 - (无效,但会通过?)

如果需要的话,需要进行更多调整来处理这些问题。

此外,我省略了 gm 标志,因为这看起来像模式验证,在这种情况下,我认为您不需要它们。如果您实际上需要在多行情况下捕获此模式的多个实例,那么您需要将这些标志放回。

更新

好的,根据其他测试数据,以下正则表达式将起作用:

/^[a-z]+-?[a-z]+( [a-z]+-?[a-z]+)?$/i

我一直觉得有一种方法可以进一步缩小它,但是 - 字符之间的复杂关系使它变得困难。

更新#2:

已更新以匹配更多示例数据。 :D

/^[a-z]+(-[a-z]+)?( [a-z]+(-[a-z]+)?)?$/i

更新#3:

好的。 。 。针对新的“一个连字符”要求,还有一项更新。 :)

/^[a-z]+(-[a-z]+( [a-z]+)?||( [a-z]+)(-[a-z]+)?)?$/i

关于javascript - 用于匹配单个名字字符串或带有一个空格和一个连字符的名字和姓氏字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21706822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com