我正在使用此正则表达式进行一些基本名称验证
^[a-zA-Z][a-zA-Z]*([-' ][a-zA-Z][a-zA-Z]*)*$
不过,我也想允许Mr & Mrs Bobble
有效。我当前的正则表达式只允许字符组之间有一个空格,我不确定如何允许<space>&<space> or <space>
答案 0 :(得分:2)
您可以使用
^[a-zA-Z][a-zA-Z]*(?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)*$
^^^^^^^^^^^^^
请参见regex demo
non-capturing group (?: & |[-' ])
匹配空格&
,空格或-
,'
或单个空格。当找到匹配项后将无法访问与它们匹配的文本时,将使用非捕获组,因此,在这种情况下,所有组都应为非捕获组:(?: & |[-' ])
将两个备选方案与{{1}分组} alternation operator和|
对量化模式序列进行分组。
如果要匹配任何空格,请用(?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)
替换模式中的文字空格。