正则表达式名称

刚刚开始探索正则表达式的“奇迹”。作为一个从试验和错误中学习的人,我真的很努力,因为我的试验抛出了不成比例的错误……我的实验是在PHP中使用ereg()进行的。

无论如何。我分别使用名字和姓氏,但现在使用相同的正则表达式。到目前为止,我有:

^[A-Z][a-zA-Z]+$

任何以大写字母开头且其余仅包含字母(大写或不大写)的长度字符串。但是我分崩离析的地方是在几乎任何地方都可能发生的特殊情况下。

  • 连字符(Worthington-Smythe)
  • 以使徒名字命名(D’Angelo)
  • 带有空格的名称(范德汉普顿)-在此阶段可能不需要或不需要中间的大写字母超出了我的兴趣。
  • 联名(本和杰里)

也许还有其他我可能没有想到的名字,但是我怀疑如果我能对此有所了解,我可以添加一下。我敢肯定,在某些情况下,一种以上的情况会以一种名字出现。

因此,我认为最重要的是让我的正则表达式也接受空格,连字符,“&”号和撇号-但从技术上讲,该名称的开头或结尾不正确。

回答:

  • 连字符(Worthington-Smythe)

在第二个字符类中添加-。最简单的方法是在开始时添加它,这样就不可能将其解释为范围修饰符(如所述a-z)。

^ [AZ] [-a-zA-Z] + $

  • 以使徒名字命名(D’Angelo)

这样做的天真方法如下:

^ [AZ] [-'a-zA-Z] + $

别忘了您可能需要将其转义到字符串中!给定您的示例,“更好”的方式可能是:

^ [AZ]'?[-a-zA-Z] + $

这将在第二位置允许单撇号。

  • 带有空格的名称(范德汉普顿)-在此阶段可能不需要或不需要中间的大写字母超出了我的兴趣。

在这里,我很想再做一次我们的天真做法:

^ [AZ]'?[-a-zA-Z] + $

可能更好的方法可能是:

^ [AZ]'?[-a-zA-Z]([a-zA-Z])* $

最后寻找多余的单词。如果您要在大量额外的文本中匹配名称,这可能不是一个好主意,但是同样,原件也不会做得很好。

  • 联名(本和杰里)

此时,您不再查看单个名称了吗?

无论如何,正如您所看到的,正则表达式具有快速增长的习惯…

以上是 正则表达式名称 的全部内容, 来源链接: utcz.com/qa/434529.html

回到顶部