2014-06-13 59 views
-1

我的條件是工作:這個表達式並不適用於所有的瀏覽器

if (/(.{4})/g.test(this.value)) this.value = this.value.replace(/(.{4})/g,'$1-'); 

這隻有在Mozilla。

這是怎麼回事?

我想在四位數後加-。例如: 1234567 - > 1234-567

+0

作爲測試在Chrome(35.0.1916.153/Mac)工作測試你的正則表達式。你能指定它不工作的地方,以及什麼結果? – Amadan

+0

如果您只測試數字,請嘗試'(\ d {4})'。查找[DEMO](http://regex101.com/r/jK9iD2)。 – Braj

+0

「有效」和「不起作用」是什麼意思? – RobG

回答

2

似乎在我的測試中使用Chrome,Safari,Firefox。需要注意的一件事是,如果最終得到4位數的偶數倍,那麼最後還會有一個尾隨短劃線,所以您可能需要考慮負向預測來解釋字符串的結尾(假設它是全部數字);並使用\d的數字,而不是.考慮:

var value="123456789012"; 
if (/(\d{4})/g.test(value)) { 
    console.log(value.replace(/(\d{4})(?!$)/g,'$1-')); 
} 
// => "1234-5678-9012" 
0

首先,您應該使用\ d來查找數字。 如果你還沒有與你的{}運氣,你可以使用「愚蠢的方式」:/(\ d \ d \ d \ d \ d)/ g只是爲了看看它是否有任何區別

1

我在下面的正則表達式here及其在Firefox,Chrome和IE8測試工作也。

'1234567'.replace(/(\d{4})/g,'$1-') 

輸出:

1234-567 

您可以在線上regex101

+0

爲什麼'm'標誌? – RobG

+0

'm修飾符:'多行。我認爲這不是必需的。非常感謝。 – Braj

相關問題