Я хочу извлечь почтовый индекс из текста. Мой почтовый индекс длится шесть цифр и может быть 560011
или 560 011
. Я использовал regex (/[0-9]{3}[ ]?[0-9]{3}/
), но это также фиксирует первые 6 цифр моего номера телефона. Я пробовал использовать [^0-9]
после моего 6 -го разряда, но это также захватывает следующий символ. Как я могу захватить только почтовый код, пренебрегая любым числом более 6 цифр?regex conflict номер телефона и почтовый индекс
ответ
Я думаю, что ваше решение заключается в добавлении границ слов. Как
/\b[0-9]{3} ?[0-9]{3}\b/
или
/\b\d{3} ?\d{3}\b/
если ваш вкус регулярных выражений поддерживает значного класса символов.
слово граница - \b
соответствует только если символ до и после того, как в из разных классов, а точнее - один из класса символов слово, а другой нет. Класс символов слов включает в себя цифры, поэтому добавление \b
до и после вашего регулярного выражения делает его совпадающим, только если ему предшествует номер и после него следует цифра (слово символ).
Кроме того, чтобы иметь класс символов только с одним символом ([ ]
), не имеет никакого смысла. Это то же самое, что и символ в регулярном выражении.
Спасибо! только то, что мне нужно. – monsy
Вы можете использовать круглые скобки, чтобы захватить первые шесть численные методы, не обращая внимания на последующем нечисловой:
/([0-9]{3} ?[0-9]{3})[^0-9]/
Это соответствует 123456 и 123 456, но не 1234567.
Какого языка вы используете? – ffledgling
используя php здесь. – monsy