2014-01-10 54 views
0

關於如何最佳使用正則表達式將前導零添加到12位EAN代碼的任何建議。 EAN碼默認爲13位(12+ 1控制),但有些製造商使用12位EAN,這意味着您需要添加前導零來使其在某些系統中工作。我如何使用正則表達式來最好地做到這一點?正則表達式將前導零添加到EAN-13

如果代碼已有13位數字,則不應進行更改。 (順便說一句,這不是由於缺少控制數字 - 使用計算器將控制添加到12位數字導致錯誤的條碼只是fyi)

謝謝!

+9

爲什麼正則表達式的解決這個問題的一個必要組成部分?看起來像(檢查字符串的長度,如果長度是12,則預先設置一個0)是大多數語言中幾行直截了當的代碼。 –

+0

我的想法。 –

+0

由於我正在使用的系統,InDesign的數據導入,我需要使用正則表達式。 – user3181084

回答

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 
+0

這似乎是在我刪除「/」時做的竅門。 使用[myregextester](http://www.myregextester.com/index.php)進行測試。 目前不在身份證機器,很快就會在那裏測試.. 非常感謝,這是一個簡單的! – user3181084

+0

'/'是分隔符,'myregextester.com'自動添加它們。 – zessx

+0

好的,這是很好的知道。 – user3181084

0

的Java:

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

PHP:

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

這是不使用正則表達式,只是普通的預等待與零的EAN,如果EAN是12位長。

+0

我不太熟悉這種書寫方式.InDesign插件使用簡單的Regex字符串進行搜索和替換。 – user3181084

+0

對不起,我以爲這是Java,但看着標籤,你並沒有真正指定語言...... –