将此正则表达式限制为5位数

时间:2016-07-26 19:45:50

标签: regex postgresql validation

我正在使用以下Regex尝试将字符串验证为有效的街道地址。

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

我真正关心的是它以数字开头,从1-5开始,有空格,然后有一些文字。

我正在努力的部分是,当我在Postgres中使用此regex和regexp_replace时,它显示为对“111111111 james smith”这样的输入有效。

我想将位数限制为5。

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

1 个答案:

答案 0 :(得分:1)

您还应该使用字符串锚点的开始(^)和结束($)

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

否则正则表达式匹配字符串的部分仍然返回true:

起始锚表示匹配字符串的开头,而结束锚表示匹配字符串的结尾,因此包括两种方式“包括整个字符串”。 这里因为你没有包含它们,你仍然可以在字符串的中间获得匹配(见上图)