jquery .replace(/./ g,"")不适合我而是其他人

ham*_*ger 5 javascript jquery replace preg-replace

我在某个地方发现了这个片段,它就像一个魅力:

var n = parseInt(e.find("span.favNum").text().replace(/./g, "")) + 1;
Run Code Online (Sandbox Code Playgroud)

如果我以类似的方式进行,它就不再起作用了.

我做以下事情:

<div id ="test">6.987</div>
var test = $("#test");
var r = test.text().replace(/./g, "");
console.log("wrong ", r);
Run Code Online (Sandbox Code Playgroud)

我知道我也可以这样替换它:

var r = test.text().replace(".", "");
Run Code Online (Sandbox Code Playgroud)

这有效.

我想了解为什么"被盗"的片段正在运行.任何的想法?

http://jsfiddle.net/nJZMf/3/

原始脚本可在此处找到:http://wp-svbtle.themeskult.com/

您可以通过查看index.html的源代码并搜索来找到该代码段.replace.

pvn*_*ula 6

你需要逃避"."

test.text().replace(/\./g, "");
Run Code Online (Sandbox Code Playgroud)


Mic*_*ary 5

您链接到的页面中的代码有效而您的无效的原因是它不是同一个正则表达式。这是我在该页面中找到的内容(以及几个地方的类似代码)

r = n.text().replace( /,/g, "" )
Run Code Online (Sandbox Code Playgroud)

rjQuery 对象在哪里。

请注意,正则表达式在,内部有一个//,而不是.像您遇到问题的代码那样。

逗号在正则表达式中不是特殊字符,所以不需要特殊处理。句号有特殊的意义。正如其他答案所指出的那样,它匹配所有字符,\如果您只想匹配,则需要在它前面加上前缀.

另外请注意,.replace()不是jQuery的代码,它的JavaScript。

jQuery 的.text()方法返回一个 JavaScriptString值。所以你对这个字符串所做的任何事情——比如.replace()调用——实际上都是一个 JavaScriptString方法。

当您想研究问题时,区别很重要:搜索“javascript string replace”将比“jquery replace”获得更好的信息。