如何减少正则表达式的长度

时间:2017-04-11 22:15:19

标签: regex pcre

我正在使用以下正则表达式,我需要在保持相同行为的同时减少其长度。

^\s*(John|Matt|Oliver|Tom)\s*(\|\s*(John|Matt|Oliver|Tom)\s*)*$

表达式验证了' |'分隔的特定名称列表。

  • KD

1 个答案:

答案 0 :(得分:1)

由于您拥有PCRE正则表达式,因此请使用subroutine call (?1)以便不重复整个第1组子模式:

^\s*(John|Matt|Oliver|Tom)\s*(\|\s*(?1)\s*)*$
                                   ^^^^

请参阅regex demo