2016-09-01 2 views
0

Я хочу извлечь почтовый индекс из текста. Мой почтовый индекс длится шесть цифр и может быть 560011 или 560 011. Я использовал regex (/[0-9]{3}[ ]?[0-9]{3}/), но это также фиксирует первые 6 цифр моего номера телефона. Я пробовал использовать [^0-9] после моего 6 -го разряда, но это также захватывает следующий символ. Как я могу захватить только почтовый код, пренебрегая любым числом более 6 цифр?regex conflict номер телефона и почтовый индекс

+0

Какого языка вы используете? – ffledgling

+0

используя php здесь. – monsy

ответ

0

Я думаю, что ваше решение заключается в добавлении границ слов. Как

/\b[0-9]{3} ?[0-9]{3}\b/ 

или

/\b\d{3} ?\d{3}\b/ 

если ваш вкус регулярных выражений поддерживает значного класса символов.

слово граница - \b соответствует только если символ до и после того, как в из разных классов, а точнее - один из класса символов слово, а другой нет. Класс символов слов включает в себя цифры, поэтому добавление \b до и после вашего регулярного выражения делает его совпадающим, только если ему предшествует номер и после него следует цифра (слово символ).

Кроме того, чтобы иметь класс символов только с одним символом ([ ]), не имеет никакого смысла. Это то же самое, что и символ в регулярном выражении.

See it here at regex101.

+0

Спасибо! только то, что мне нужно. – monsy

0

Вы можете использовать круглые скобки, чтобы захватить первые шесть численные методы, не обращая внимания на последующем нечисловой:

/([0-9]{3} ?[0-9]{3})[^0-9]/ 

Это соответствует 123456 и 123 456, но не 1234567.