我尝试检查带有正则表达式的ocr字符串中是否存在自定义安全号码。我永远不知道正确的电话号码。我只想了解字符串中是否存在自定义安全号码。
例如:
// 81130790K038 (always 12 characters, 8x 0-9, 1x A-Z, 3x 0-9)
这里是我所拥有的,但它与正确的ssn不匹配:
// At the end there is: " 8 11 30 7 90K0 38 "
$example_str = "SGA/SIE 405801/11700/69 Personal? Nr IGe?urlsdalun smfltpgngen?mßxllige .If .lr Juni 2 01 8 0 3 .0 7 .2 01 8 Blatt 1 0 0 0 69 1 3,0 7190 4 . roilcfessmn Fretbetrag am. Frerbetrag mtl.? DSA Glettzone lät.ng? VJ Ur1 üb. unAnspl. Url.Tg.gen. IResturlaub SV-Nummer .kk oJ 8 11 30 7 90K0 38 ";
if(preg_match('/([\s]{1})([0-9\s]{8,16})([A-Z0-9a-z]{1})([0-9\s]{3,6})([\s]{1})/', $example_str, $matches, PREG_OFFSET_CAPTURE)
{
print_r($matches);
}
结果:
Array
(
[0] Array
(
[0] 1 0 0 0 69 1
[1] 133
)
[1] Array
(
[0]
[1] 133
)
[2] Array
(
[0] 1 0 0 0
[1] 134
)
[3] Array
(
[0] 6
[1] 142
)
[4] Array
(
[0] 9 1
[1] 143
)
[5] Array
(
[0]
[1] 146
)
)
请问有人可以帮我处理正则表达式吗?
最好的问候, olli
更新: preg_match_all 可以帮助我,谢谢。
答案 0 :(得分:2)
根据格式,您可以使用以下模式:
(?<!\S)(?:[0-9] *){8}[A-Z](?: *[0-9]){3}(?!\S)
(?<!\S)
检查之前是否存在不是空格的字符,而(?!\S)
之后是否存在空格。
如果需要,可以用\h
(水平空白字符类)或\s
替换任何种类的空白来替换每个文字空间。