假设:
- 标识符始终为大写
- 标识符总是由 3 个字母组成
- Number1 只有数字并且总是以破折号开头
- Number2 只有数字并且总是以破折号开头
这个正则表达式可以工作->'/([A-Z]{3})-([0-9]*)-([0-9]*)/'
例子:
$data = 'Blablabla ABC-3901-11801 John Doe Blablabla';
preg_match_all('/([A-Z]{3})-([0-9]*)-([0-9]*)/', $data, $matches, PREG_PATTERN_ORDER);
var_dump($matches);
这将输出
array
0 =>
array
0 => string 'ABC-3901-11801' (length=14)
1 =>
array
0 => string 'ABC' (length=3)
2 =>
array
0 => string '3901' (length=4)
3 =>
array
0 => string '11801' (length=5)
- $matches[1] 始终是标识符
- $matches[2] 总是 number1
- $matches[3] 总是 number2
编辑:这也是一个更通用的正则表达式:
/([A-Za-z]*)-([0-9]*)-([0-9]*)/
这仅假设 IDENTIFIER 仅包含字母(任何数字,大写或小写)
例如,这个正则表达式在这种情况下有效
Blablabla abcdef-3901-11801 John Doe Blablabla