其他所有字符我想更換比所有其他0-9的字符串中的字符,使用Javascript。的Javascript正則表達式,替換不是數字
爲什麼會這樣的正則表達式不工作?
"a100.dfwe".replace(/([^0-9])+/i, "")
其他所有字符我想更換比所有其他0-9的字符串中的字符,使用Javascript。的Javascript正則表達式,替換不是數字
爲什麼會這樣的正則表達式不工作?
"a100.dfwe".replace(/([^0-9])+/i, "")
您需要/g
修飾符可替換每發生:
"a100.dfwe".replace(/[^0-9]+/g, "");
我也刪除冗餘i
改性劑和未使用的捕獲子表達式括號爲你。正如其他人所指出的那樣,你也可以使用\D
來進一步縮短:
"a100.dfwe".replace(/\D+/g, "");
它不起作用,因爲字符類[^0-9]
(=重複修飾符+
只會匹配一個非數字字符序列,例如「aaa」。
你的目的,使用/g
修改爲其他建議(在全球範圍內更換所有的結果),你也可以使用預先定義的字符類\D
(=不是一個數字),而不是[^0-9]
,這將導致更簡潔的正則表達式/\D+/
。
更好地理解它 應該不是「a」和「.dfwe」來了+組下,因爲這是1等等。 – 2012-02-16 10:59:03
'\ D +'表示「尋找一個或多個非數字」,而'(\ D)+'尋找(相同)非數字的一個或多個重複,這不是你想要的。 現在,無論你做'/ \ D/g'(替換每一個非數字)還是'/ \ D +/g'(替換每一個非數字序列),除了可能的性能除非您處理數以萬計的字符串,否則這些信息不會被察覺。 – fanaugen 2012-02-16 11:15:17
啊非常感謝。這完全解釋了我的事情。謝謝 ! – 2012-02-16 12:03:47
什麼負數:
使用安迪E公司的示例工作,除非你有一個負數。然後它會刪除' - '符號,並且還會給您一個總是正數的數字(這可能是正確的)。但是,如果你想保持數小於0,我建議如下:
"a-100.dfwe".replace(/(?!-)[^0-9.]/g, "") //equals -100
但要小心,因爲這將會使所有的「 - 」符號,給你一個錯誤,如果你的文字看起來像「-A- 100.dfwe」
他並不是真的在談論數字,只是一組數字。無論如何,你的正則表達式仍然匹配'-',因爲它不在字符串的開頭。 – 2016-03-04 16:15:00
基於關閉@ user3324764的答案 - 做一個原型功能和數字轉換爲數字。
String.prototype.extractNumber = function()
{
return Number(this.replace(/(?!-)[^0-9.]/g, ""));
};
例子:
"123.456px".extractNumber(); // 123.456
謝謝你,究竟是什麼的 「+」 代表什麼? – 2012-02-16 10:57:04
@PrakashRaman:它表示*匹配一個或多個前面的字符*。這不是必需的,但它會通過減少所需替換的次數來略微提高正則表達式的性能。 – 2012-02-16 12:19:29
(技術上此答案,回答了這個問題,但沒有對浮子) 「123.456px」 .replace(/ \ d + /克, 「」); - > 123456 – 2016-05-16 16:48:03