2016-07-26 4 views
0

Я использую следующее Regex, чтобы попытаться проверить строку как действительный адрес улицы.Ограничение этого регулярного выражения до 5 цифр

[0-9]{1,5}\s\w.* 

Все, что я действительно забочусь о том, что она начинается с цифрами, где-то с 1-5, имеет место, а потом какой-нибудь текст.

Часть, с которой я борюсь, заключается в том, что, когда я использую это регулярное выражение с regexp_replace в Postgres, оно отображается как допустимое для ввода типа «111111111 james smith».

Я хочу, чтобы ограничить количество цифр до 5.

SELECT regexp_replace('111111111 james smith', '^[ \t]+|[ \t]+$', '') ~* 
'\d{1,5}\b\s\w\*' as ValidStreet 

ответ

1

Вы должны также использовать начало (^) и конец ($) строковых якорей

^[0-9]{1,5}\s\w.*$ 

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

Стартовый якорь говорит, что он соответствует началу строки, а конечный якорь говорит, что он соответствует концу строки, поэтому включение обоих средств означает «включить всю строку». Здесь, потому что вы их не включаете, вы все равно получаете совпадения в середине строки (см. Изображение выше)

+0

Спасибо, это именно то, что мне нужно! –