TL123
TL 123
tl123
tl 123
TLABC123
tlabc123
我接下来要做的是preg_replace
该匹配的结果(最终总是返回TL-123
- 例如)。
因此,TL
之后的任何字母或数字组合都会返回TL-
,反之亦然。朝正确方向的任何推动都会非常有帮助。谢谢!
修改的
实际上我可能需要preg_match_all。
答案 0 :(得分:1)
要匹配指定的模式,您可以使用:
TL(?:[^0-9]*)(\d+)
这将匹配TL
后跟任何不是数字(或没有)的数据,然后是数字列表。
你可以在PHP的preg_replace()
中使用它:
$str = preg_replace('/TL(?:[^0-9]*)(\d+)/i', 'TL-$1', $str);
此示例当然假定TL
是您要匹配的确切字符。如果TL
只是占位符而您可以匹配任何内容,则可以使用以下内容:
preg_replace('/([a-z]{2})(?:[^0-9]*)(\d+)/i', '$1-$2', $str);
有了这个,我让它硬编码只允许2个字符匹配({2}
)。如果需要更改,可以将其修改为任何数字。
另外,由于您希望匹配的字符始终为大写,但匹配小写,我建议只在结果周围使用strtoupper()
(而不是回调)。< / p>