【问题标题】:Generate Regular Expression for First Name Last Name [duplicate]为名字姓氏生成正则表达式[重复]
【发布时间】:2016-11-17 10:35:21
【问题描述】:

我想创建一个只有名字和姓氏的正则表达式,只有 2 个单词和 1 个空格。

目前我的正则表达式在这里:https://regex101.com/r/WigXOo/1

我试过下面的正则表达式:

[A-Z][a-z]+(\s|,)[A-Z][a-z]{1,19}

验证正确:

苏尼尔·库马尔(正确)

但它允许第三个名称,例如:Sunil Kumar 123(正确)

我希望得到如下结果:

正确的输出:

苏尼尔库马尔(正确)

输出不正确:

  • Sunil Kumar 123(不正确)(我只想要名字和第二个名字)

  • SUnil Kumar(不正确)(只需要第一个名字的 1 个字母和第二个名字的第二个字母大写)

  • Sunil Kumar(不正确)(第一个和第二个名字之间只需要一个空格)(名字和第二个名字之间有 2 个空格)

请帮忙。

【问题讨论】:

  • 你说Sunil Kumar(正确)和Sunil Kumar(错误)是什么问题,但它们之间没有区别。
  • 必填Falsehoods Programmers Believe About Names。另外,去阅读正则表达式教程。您需要开始和结束锚点。请阅读How to Ask 并分享您的研究。 “你尝试了什么”并不意味着“显示不起作用的代码”,它的意思是“显示你尝试过什么让该代码工作”。
  • 我已经提到了名字和姓氏之间有2个空格。
  • 反正2个空格的版本不匹配

标签: c# regex


【解决方案1】:

您可以在表达式中添加锚点以匹配整个输入,即^$,这样您的表达式将变为:

^[A-Z][a-z]+(\s|,)[A-Z][a-z]{1,19}$

【讨论】:

猜你喜欢
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多