我需要一个正则表达式来提取 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)
我怎么能改变这个正则表达式不匹配一个只有数字的字符串?