好的,所以我有一小段代码,应该扫描一个网站上的数字,但由于某种原因,我有预感,它根本就没有扫描。
var Regex = /\<span class="currency-robux" data-se="item-privatesale-price">([\d,]+)\<\/span\>/;
var PriceSelling = data.match(Regex);
PriceSelling = Number(PriceSelling.replace("," , ""));
我对此有什么不妥吗?
这与if
声明
if (PriceSelling <= PriceWanting) {
从那里调用一个函数来运行,但由于某种原因它似乎没有运行。所以我认为Regex
是错误的但不确定如何。 (PriceWanting
有一个变量;这只是代码本身的一个片段。)
在网站上,这就是我想要提取的内容。
<span class="robux " data-se="item-privatesale-price">115</span>
请记住item-privatesale-price
更改,这就是我将其设置为捕获该数据的原因。
答案 0 :(得分:2)
你的正则表达式通常很好,但是你以错误的方式使用结果。如果匹配,它将返回包含完整字符串和匹配数字的结果。不只是数字。您只需要数字,即匹配索引1
,这样您就可以使用PriceSelling[1]
。
同样在您的修改中,您在span
上与class="robux "
匹配,这显然与您的正则表达式不同。如果您只对data-se="item-privatesale-price"
感兴趣,可以将其更改为与其中包含该属性的标记相匹配。
var data = '<span class="robux " data-se="item-privatesale-price">115</span>';
// matches a span with the data-se attribute within it
// i.e. appears before the closing >
var Regex = /\<span[^>]* data-se="item-privatesale-price"[^>]*>([\d,]+)\<\/span\>/;
var PriceSelling = 0;
var PriceSellingMatch = data.match(Regex);
if(PriceSellingMatch != null) {
PriceSelling = Number(PriceSellingMatch[1].replace("," , ""));
}
答案 1 :(得分:1)
你正在寻找的正则表达式中的类是错误的:
/\<span class="currency-robux" data-se="item-privatesale-price">([\d,]+)\<\/span\>/
但正则表达式应该是
/\<span class="robux " data-se="item-privatesale-price">([\d,]+)\<\/span\>/
查看类attr值的差异
答案 2 :(得分:0)
正则表达式不适合解析HTML,你可以这样做:
var div = document.createElement("div");
div.innerHTML = YOUR_HTML_STRING;
var price = parseInt(div.querySelector("[data-se='item-privatesale-price']").innerHTML);
console.log(price); // => 115
请在此处查看:JSFiddle