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