簡體   English   中英

JavaScript函數中的RegEx問題-不替換任何內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM