2014-09-16 4 views
-1

Итак, у меня есть строка цифр. Мне нужны определенные правила. Он может иметь tel1 или tel2 при запуске (или нет) Если Е число должно быть foolowed 4 цифры затем следуют 49. (Необязательно шаблон)Regex: match patterns

Так как строка:

tel1: +E1234498912345678,tel2: +498912345678,tel1: +E123449D1238912345678,tel2: +E1234498912345678 

действует

tel1: +E12344598912345678,tel2: +498912345678,tel1: +E123449D1238912345678,tel2: +E1234498912345678 

является недействительным (первый элемент недействителен)

А также каждый элемент должен начинаться с +, как в примерах

UPDATE: Также должна соответствовать номера с '@' суффикс

ответ

0

Demo: http://regex101.com/r/oG6lH3/1

(tel\d: |)\+(E\d\d\d\d49|49) 

Это будет также соответствовать Tel3 или tel9. Если это проблема, используйте один из других предоставленных ответов.

0
^((tel1|tel2)?(:\s*)?\+(E)?\d{4}49\w+(,|$)|(tel1|tel2)?(:\s*)?\+(?!E)\w+(,|$))+$ 

Вы можете попробовать это. Смотрите демоверсию.

http://regex101.com/r/iO1uK1/3

+0

Это выглядит хорошо, спасибо. Я бы хотел изменить параметры tel1/tel2: sip/tel. Поэтому я использую^((sip | tel)? (: \ S *)? \ + (E)? \ D {4} 49 \ w + (, | $) | (sip | tel)? (: \ S *)? \ + (?! E) \ w + (, | $)) + $ на этой допустимой строке: sip: + E1234498912345678 @ destinazione1.italtel.it, tel: + 498912345678, sip: [email protected] это, sip: [email protected], но не соответствует. Я что-то упускаю? –

+0

@ En-Motion имеет '@', который не покрывается '\ w' – vks

+0

@ En-Motion'^((sip | tel)? (: \ S *)? \ + (E)? \ D {4 } 49 [@ \ ш.] + (, | $) | (глотка | тел)? (: \ с *) \ + (?! E) [. @ \ ш] + (, | $)) + $ 'попробуйте это – vks

1

Это будет работать:

^((\s*tel[12]:\s*)?\+(E\d{4}49|\d)[^,]*(,|$))+$ 

Попробуйте демо here.

+0

Используя это, это действительно: tel1: + E1234498912345678, tel2: + 498912345678, tel1: + E123449D1238912345678, tel2: + E12345498912345678. Последний элемент должен привести к сбою. –

+0

@ En-Motion Nice catch, теперь он работает –

0

Вы можете попробовать ниже регулярное выражение,

^\s*(?:(?:tel[12]):\s*\+(?:E(?=\d{4}49)\S+?\b|\d+))(?:,(?:(?:tel[12]):\s*\+(?:E(?=\d{4}49)\S+?\b|\d+)))+$ 

DEMO