2015-02-26 4 views
0

Я пытаюсь написать регулярное выражение, которое соответствует строке при трех условиях:Regex верно, только если строка полностью содержит различные матчи

1) Вся строка соответствует всем или некоторым из групп захвата, определенных в шаблоне

2) Захват группы не должны быть определены в том же порядке, как они появляются в структуре

3) шаблон может иметь неизвестное количество групп захвата, которые не встречаются в строке

Таким образом, некоторые RegEx что включает следующие группы захвата ...

(,101,)|(,10,)|(,203,)|(,542,) 

я ожидал бы RegEx, чтобы соответствовать следующим ...

,203,10,101, 

... потому что каждый бит строки каким-то образом соответствует.

Но я бы не хотел, чтобы соответствовать этой строке ...

,203,684,10, 

... потому что, 684, не одна из указанных групп.

В конечном итоге это будет передано в оператор SQL. Поэтому я мог бы сделать полную противоположность тому, что я сказал, а затем сделать свой SQL-запрос NOT REGEX. Таким образом, по сути, это двойной отрицательный.

+0

'(, 101 |, 10 |, 203 |, 542) +,'? – beerbajay

+0

nope. это будет соответствовать, если:, 203,684,10, – rgbflawed

+0

Откуда эта структура данных? Это звучит как метаинформация, которая должна быть сохранена для нормализации для начала? – CBroe

ответ

2

Итак ... это то, что вы ищете?

/^,(101,|10,|203,|542,)+$/ 
+1

Иисус. Это должно было быть так просто. Спасибо @sebnukem! – rgbflawed

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