繁体   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