2015-10-17 2 views
1

У меня есть несколько элементов popup, email и webhook. Они могут прийти в строку отформатированный как:Regex строго соответствует строке, содержащей строки с разделителем?

popup|email|webhook 
email|webhook 
webhook 
email 
email|webhook 
popup|webhook 
popup|email 
popup 

я на самом деле получил регулярное выражение ^(?:popup){0,1}?\|?(?:email){0,1}?\|?(?:webhook){0,1}?$, но он будет соответствовать popup|email|webhook, а также popupemail|webhook.

Есть ли способ гарантировать, что элементы разделены моим сепаратором |?

У меня также был (?>(?>(?>popup\|?){0,1}?email\|?){0,1}?webhook){0,1}?, но это не решение, так как оно будет работать только в одном направлении. Я почти уверен, что это легко разрешимо, но я не знаю, каким образом искать в мире Regex.

ответ

1

Вам просто нужно добавить границы слов, чтобы убедиться, что два слова никогда не будут вместе.

^(?:popup)?\b\|?\b(?:email)?\b\|?\b(?:webhook)?$ 

Demo

+0

Действительно, это решение! Большое спасибо ! – Kwaadpepper

+0

Нет проблем. Рад, что смог помочь. – Anonymous

Смежные вопросы