我不明白爲什麼我不能使用正則表達式字符串的變量。見鏈接:http://jsfiddle.net/nmWuw/1/Javascript字符串變量與正則表達式
它沒有變量,但當變量用於正則表達式時不起作用。我也躲過了我的反斜槓。產量應該是'1,234,567,890'。
我不明白爲什麼我不能使用正則表達式字符串的變量。見鏈接:http://jsfiddle.net/nmWuw/1/Javascript字符串變量與正則表達式
它沒有變量,但當變量用於正則表達式時不起作用。我也躲過了我的反斜槓。產量應該是'1,234,567,890'。
var regex = "/\\d(?=(?:\\d{3})+(?!\\d))/g, '$&,'";
這是一個字符串。它不是一個正則表達式對象和替換字符串。當它傳遞到replace
時,它是一個參數,而不是兩個。您需要單獨通過這兩個參數:
var regex = /\d(?=(?:\d{3})+(?!\d))/g;
var replace = '$&,';
var num = 1234567890;
alert(String(num).replace(/\d(?=(?:\d{3})+(?!\d))/g, '$&,'));
alert(String(num).replace(regex, replace));
alert(regex);
請注意,您可以在一個呼叫定義它們,如果你真的想,使用數組和apply
:
var regex = [/\d(?=(?:\d{3})+(?!\d))/g, '$&,'];
alert(String.prototype.replace.apply(num, regex));
然而,這並不是一個好主意 - 它的很多難以閱讀,而且更不直觀。
哦,geez ...我甚至沒有看到那個錯誤。 Brainfart就我而言。謝謝。 – ngen
聽起來像某人需要花2分鐘閱讀文檔。 – ChaosPandion
正確的演示:http://jsfiddle.net/simevidas/nmWuw/5/ –