如何使正则表达式模式的某些部分成为条件?

2023-12-07

我在这个论坛上查看了我的问题的答案,但找不到。请专家帮忙。

我在验证名字字符串时遇到问题。我得到了字符串需要遵守的一组规则,并且需要使用正则表达式来确认这些规则。我写了一个模式。除了一条规则之外,我的模式尊重其他一切。我在下面列出了我的正则表达式模式

([A-Za-z]+[-'!` ]?)*

我正在检查一个字符串,比如名字或姓氏,它需要以字母开头,并且可以有(- 或 ! 或 ' 或 ` 或空格)这 5 个字符中的任何一个,且仅当存在第二个单词时。如果一个名字有 2 个单词,中间有一个空格,那么就可以了。一些例子

List of Valid Names
TIMOTHY
JONATHON
PATRICK
B`ELLA
SUZY JANE - Only one space allowed
SUZY-JANE

List of Invalid Ones
T~ELLA - Because this ~ is not part of regex
SUZY - JANE - No space allowed between hyphens
SUZY  JANE - 2 spaces betweeb words not allowed
GRACO&LAME - & is not allowed

我的正则表达式通过了上述所有条件,但当名称以任何一个特殊字符结尾时失败。例如,如果我给出 JOHN- OR JOHN' OR JOHN! OR JOHN` OR JOHN (末尾有 s 空格)这些无效,但我的正则表达式无法处理它

有人可以告诉我如何编写条件正则表达式吗?就像第一个单词一样,只有当有第二个单词时,正则表达式模式才必须允许输入这些特殊字符。


Try this

[A-Za-z]+(?:[-'!` ]?[A-Za-z]+)?

您可以在这里在线查看:regexr

第二部分

(?:[-'!` ]?[A-Za-z]+)? 

是一个非捕获组,该组是因为?最后可选。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使正则表达式模式的某些部分成为条件? 的相关文章

随机推荐