2014-01-15 4 views
0

Я не смог найти правильное решение на PHP. Мои струнные модели будут какРегулярное выражение, начинающееся и заканчивающееся скобками

[{}] 
[{1}] 
[{1,3}] 
[{1,3,4}] 
etc.. 

И я попытался использовать регулярное выражение как "/^\[\{\d|,*\}\]$/i". Но он не работает отлично.

В основном строка должна начинаться с «[{« (один раз), заканчиваться на «)]» (один раз) и содержать числовые символы и «,» между ними.

Надеюсь, это делает мой запрос понятным. Спасибо,

+0

Не могли бы вы рассказать нам, что вы думаете об этой части? '\ d |, *' – meagar

+0

Вы можете найти это полезным, http://gskinner.com/RegExr/ –

+0

@meagar: \ d дает [0-9], '|' означает OR, «,» - это еще один символ, разрешенный, и «*» означает любое количество раз, которое может появиться в этой последовательности. IanJamieson: Я уже пробовал это. Но я счел это полезным для проверки и не создания регулярного выражения. Может быть, я что-то упустил? –

ответ

0

Try:

(\[{[0-9,]+}\]) 

Это будет соответствовать всем случаям, когда Существует сочетание цифр и запятых между [{и}]

See it in action

+0

Должно быть более конкретным, я не думаю, что мы хотим соответствовать' ,, 5,, 'или тому подобное. – meagar

+0

emh: он работает как прелесть для моего требования, потому что я уже получаю санированный вход без повторяющиеся запятые без номера между ними. Однако, если мы хотим строгого совпадения, t также следует рассматривать. Но спасибо в любом случае ... –

+0

Отлично, рад, что это сработало для вас. – emh

1

Просто попробуйте с:

^\[\{((\d+,)*\d+)?\}\]$ 
+0

Не будет работать, если у него есть что-то вроде' [{1,3}], [{1,3,4}] 'и хочет захватить каждый – tenub

+0

Дает «preg_match() [function.preg-match]: Без конечного разделителя '^' found" –

+0

@PratipGhosh это чистое регулярное выражение. Вы должны обернуть его '/ ' – hsz

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