正则表达式为EAN-13增加了前导零

时间:2014-01-10 09:19:17

标签: regex

有关如何最好地使用Regex为12位EAN代码添加前导零的任何建议。

EAN代码默认为13位(12 + 1控制),但有些制造商使用12位EAN,这意味着您需要在某些系统中添加前导零。我如何使用正则表达式来做到这一点?

如果代码已有13位数字,则不应进行任何更改。 (顺便说一句,这不是由于缺少控制数字 - 使用计算器将控件添加到12位数导致错误的条形码只是fyi)

谢谢!

2 个答案:

答案 0 :(得分:2)

如果你想使用一个正则表达式,只需在每12位(而不是更多)EAN上添加一个前导0。

PHP示例:

$ean = '978294019961'; 
echo preg_replace('/^\d{12}$/', '0$0', $ean); // 0978294019961

$ean = '0978294019961';
echo preg_replace('/^\d{12}$/', '0$0', $ean); // 0978294019961

答案 1 :(得分:0)

爪哇:

String EAN13 = (EAN.length()==12?"0":"") + EAN;

PHP:

$ean13 = (strlen($ean)==12?"0":"") . $ean;

这不是正在使用正则表达式,如果ean长度为12位,则只需要预先挂起ean,如果ean是12位数。