我正在尝试使用正则表达式来匹配此邮件地址:
4F 50 Adele Street 01234 London
这是我的代码:
if( !(preg_match('/[1-9]{5}[A-Za-z] [1-9] [A-Za-z\.]+ [A-Za-z\.]+ [0-9]{5} [A-Za-z\.]+/', $address))){
return true;
}
}
答案 0 :(得分:1)
试试这个RE:
/[1-9][a-z] [1-9][0-9] [a-z.]+ [a-z.]+ [0-9]{5} [a-z.]+/i
的变化:
{5}
[1-9]
更改为[1-9][0-9]
.
A-Za-z
,我只需编写a-z
并使用i
修饰符使其不区分大小写答案 1 :(得分:1)
您可能需要更强大的解决方案
4F 50 Adele Street 01234 London
4F
:总是一个数字和一个字符?或者可能是14B
?50
:总是两位数?或任意数量的数字,例如1234
或8
?Adele Street
:总是两个单词只包含字母?或者可能是Smith's Broad Street
?01234
:总是五位数?London
:总是一个字?或者可能是Little Winging
?以下是一个例子(但有很多方法可以做到!)
preg_match("/\d+[a-z]\s+\d+\s+\D+\s+\d{5}\s+\S+/i", $address);
让我们来看看
“匹配任意数量的数字\d+
后跟一个字母a-z
,一个或多个空格\s+
,任意数量的数字\d+
,一个或多个空格{{ 1}},一个或多个不数字\s+
,一个或多个空格\D+
,正好五个数字\s+
,一个或多个空格{{ 1}},一个或多个不空白\d{5}
“
\s+
匹配一个数字,与\S+
\d
匹配任何非数字的内容,与[0-9]
\D
匹配空白[^0-9]
匹配任何不是空白的内容\s
意味着匹配一个或多个
最后* \S
使整个模式不区分大小写该示例假设
+
/i
\D+
开头的任何东西(之后可能会更多的话,我们会在第一次停止匹配)随意提问或评论。有很多方法可以处理这样的问题,具体取决于您正在努力解决的数据!