我的條件是工作:這個表達式並不適用於所有的瀏覽器
if (/(.{4})/g.test(this.value)) this.value = this.value.replace(/(.{4})/g,'$1-');
這隻有在Mozilla。
這是怎麼回事?
我想在四位數後加-
。例如: 1234567 - > 1234-567
我的條件是工作:這個表達式並不適用於所有的瀏覽器
if (/(.{4})/g.test(this.value)) this.value = this.value.replace(/(.{4})/g,'$1-');
這隻有在Mozilla。
這是怎麼回事?
我想在四位數後加-
。例如: 1234567 - > 1234-567
似乎在我的測試中使用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"
首先,您應該使用\ d來查找數字。 如果你還沒有與你的{}運氣,你可以使用「愚蠢的方式」:/(\ d \ d \ d \ d \ d)/ g只是爲了看看它是否有任何區別
作爲測試在Chrome(35.0.1916.153/Mac)工作測試你的正則表達式。你能指定它不工作的地方,以及什麼結果? – Amadan
如果您只測試數字,請嘗試'(\ d {4})'。查找[DEMO](http://regex101.com/r/jK9iD2)。 – Braj
「有效」和「不起作用」是什麼意思? – RobG