【发布时间】:2013-05-27 19:27:49
【问题描述】:
我需要一个正则表达式来提取 code_number, 要求是:
- 长度必须为 5 个字符
- 任何位置都必须包含至少一位数字
- 任何位置都必须至少包含一个字母
理想情况下,这应该只使用一个正则表达式来完成。
下面的正则表达式我快到了,问题是这个正则表达式不符合第三个要求,它不应该匹配11111,因为缺少至少一个字母
$regex = '~\b(?=[a-zA-Z0-9]{5}\b)[a-zA-Z0-9]*\d[a-zA-Z0-9]*~';
$sms = ' 11111 keyrod 07:30 02.10.2013';
preg_match($regex, $sms, $matches);
print_r($matches); // print array([0] => 11111)
如何更改此正则表达式以不匹配仅包含数字的字符串?
【问题讨论】:
-
根据 SMS,唯一匹配的是时间字符串。
标签: php regex preg-match