正则表达式PHP,条件

时间:2015-10-02 12:44:41

标签: php regex

我正在研究一个包含地址排序的项目。

我有一个典型的地址,例如:25 Down Street 15000 London

另一方面,我得到了一个更具体的地址,例如25 **B** Down Street 15000 London

我找到了一种只使用此正则表达式选择街道数量的方法:\b([1-9][0-9]{0,2})

但是你可以看到一些地址包含另一个字母,它是数字的一部分(如25 A,25 B ..)

所以现在我搜索正则表达式能够找到街道的数量,即使它包含的不仅仅是数字。

示例:如果地址为25 Down Street(我想找到25),地址是25 B Down Street(我想找{4}}

继续搜索,但也许你有一个想法可以帮助我。

谢谢

1 个答案:

答案 0 :(得分:1)

如果您在字符串中的第一个1-3位数字后面只有一个拉丁字母,则可以使用以下正则表达式:

'/^[1-9][0-9]{0,2}(?:\s*[A-Z])?\b/'

请参阅demo

单词边界\b将确保在第一个数字跟随可选空格后的拉丁字母后面没有单词字符。如果缺少该字母,\b仍会确保该数字后跟一个非单词字符,这似乎符合您的要求。

如果您想在第一个号码属于该号码后假设下一个ALLCAPS字词,请使用:

'/^[1-9][0-9]{0,2}(?:\s*[A-Z]+)?\b/' 
                             ^