5

我在某处找到了这个片段,它就像一个魅力:

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

如果我以类似的方式这样做,它就不再起作用了。

我执行以下操作:

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

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

var r = test.text().replace(".", "");

这行得通。

我想了解为什么“被盗”片段有效。任何想法?

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

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

您可以通过查看 index.html 的源代码并搜索.replace.

4

5 回答 5

7

您需要转义“。”

test.text().replace(/\./g, "");
于 2013-06-06T19:13:04.863 回答
5

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

r = n.text().replace( /,/g, "" )

rjQuery 对象在哪里。

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

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

另请注意,这不是.replace()jQuery代码,而是 JavaScript。

jQuery 的.text()方法返回一个 JavaScriptString值。因此,您对该字符串执行的任何操作(例如.replace()调用)实际上都是 JavaScriptString方法。

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

于 2013-06-06T19:21:52.583 回答
3

它必须var r = test.text().replace(/\./g, "");代替,var r = test.text().replace(/./g, "");因为您需要转义.才能替换它。

于 2013-06-06T19:10:28.823 回答
2

http://jsfiddle.net/mrk1989/nJZMf/4/

解决方案,因为我添加\var r = test.text().replace(/\./g, "");

于 2013-06-06T19:15:07.423 回答
1

问题是你没有逃脱点。

但请记住:

.replace(".", "");

.replace(/\./g, "");

是两个不同的东西。

例如:https ://jsfiddle.net/rmhpkz9n/1/

于 2017-08-30T13:31:13.713 回答