我正在使用以下正则表达式,我需要在保持相同行为的同时减少其长度。
^\s*(John|Matt|Oliver|Tom)\s*(\|\s*(John|Matt|Oliver|Tom)\s*)*$
表达式验证了' |'分隔的特定名称列表。
答案 0 :(得分:1)
由于您拥有PCRE正则表达式,因此请使用subroutine call (?1)
以便不重复整个第1组子模式:
^\s*(John|Matt|Oliver|Tom)\s*(\|\s*(?1)\s*)*$
^^^^
请参阅regex demo。