[英]RegEx issue in JavaScript Function - Not replacing anything
計划A:這是一個非常簡單的功能……真的很荒謬。 我要么完全誤解了RegEx如何與字符串替換一起工作,要么我犯了另一個我無法查明的愚蠢錯誤。
function returnFloat(str){
console.log(str.replace(/$,)( /g,""));
}
但是當我稱它為:
returnFloat("($ 51,453,042.21)")
>>> ($ 51,453,042.21)
據我了解,我的正則表達式應刪除所有出現的美元符號,逗號和括號。 我已經通讀了至少10篇類似問題的文章(大多數人使用正則表達式作為字符串或無效的正則表達式,但我認為這不適用於此處),而沒有解決我的問題的任何更改。
我的計划B丑陋:
str = str.replace("$", "");
str = str.replace(",", "");
str = str.replace(",", "");
str = str.replace(" ", "");
str = str.replace("(", "");
str = str.replace(")", "");
console.log(str);
RegEx中有某些東西被認為是特殊的正則表達式字符,其中包括字符$
, (
和)
。 如果要精確搜索它們,則需要對其進行轉義(並將它們放入字符集或按位或分組)。 否則, 您的Regex對解釋器毫無意義
function toFloat(str){ return str.replace(/[\\$,\\(\\)]/g,''); } console.log(toFloat('($1,234,567.90'));
請注意,這並不是這個字符串CONVER的浮動,如果你試圖做toFloat('($1,234,567.90)')+10 you would get '1234568.9010'.
您將需要調用parseFloat()
函數。
$
字符表示行尾,請嘗試:
console.log(str.replace(/[\$,)( ]/g,""));
您可以將替換項固定為.replace(/[$,)( ]/g, "")
。
但是,如果要刪除所有不是數字或點的字母,則存在更簡單的方法:
.replace(/[^\d.]/g, "")
這里\\d
指數(0。9),和[^\\d.]
指“未任何符號的內[...]
”,在這種情況下不是數字,而不是一個點。
如果我理解正確,那么您希望擁有此列表:51,453,042.21
您需要的是角色類。 這樣,您只需要擔心],\\和-字符(和^,如果您將其放在字符類“ [”的開頭之后)就可以了。 語法:[characters],其中characters是一個列表,其中包含要放置的字符(在您的情況下為$())。
g表示全局,並導致replace調用替換所有匹配項,而不僅僅是第一個匹配項。
var myString = '($ 51,453,042.21)';
console.log(myString.replace(/[$()]/g, "")); //51,453,042.21
如果要刪除“,”
var myString = '($ 51,453,042.21)';
console.log(myString.replace(/[$(),]/g, "")); //51453042.21
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.