【问题标题】:Regex using JQuery inquiry使用 JQuery 查询的正则表达式
【发布时间】:2023-03-02 23:08:02
【问题描述】:

以这种格式使用jQuery,格式如下:

Array.prototype.slice.call($("noscript+script")).map(function (v) {
    return v.textContent;
})

在以下网页上:http://www.redcoon.it/B404813-StarTech-ST122UTPAEU-Estensore-segnale_Altri-Accessori

我正在尝试仅查询产品的价格,但我不确定我需要使用什么正则表达式才能从我在网页上运行上述代码行时得到的大结果中获取价格

我试过这个:

Array.prototype.slice.call($("noscript+script")).map(function (v) {
    return v.textContent.replace(/[^\d\d\d\.\d\d]/gi, "");
})

但后来我也得到了所有其他数字和句点。请帮忙

【问题讨论】:

  • 发布问题中文本内容的示例以及您要提取的内容。
  • 未知网站,如果包含virii怎么办?为什么不能只发布要提取的示例文本。

标签: jquery regex web


【解决方案1】:

尝试类似:

\d+\.?\d+

这匹配 1 位或多位数字,后跟可选的小数点(如果您想要要求小数点,请删除 ?),后跟 1 位或多位数字。

var reg = /(\d+\.?\d+)/

var text = "sdg gsfdgdf gsg. rsgrdg. sgrgsrg sioig. sgrsrg 12.34 sergsrg. grgrgss gsgrmnoijr sikmg. rgsrgsrg 5.33 grsrgrg srgsrg.";

console.log(reg.exec(text));

fiddle

您将看到记录的是一个包含所有价格的数组。

您可以通过将+ 替换为适当的量词来修改以限制字符数。所以要匹配你原来的建议:

var reg = /([^\d]\d{3}\.\d{2})/

匹配 3 个数字,一个(现在需要)小数位,然后再匹配 2 个数字。请注意,[^\d] 会阻止它匹配较长数字中的最后 5 位数字,例如 1122.44。

编辑:如果您需要按照@JoaoRaposo 的建议匹配单个数字,您可以这样做:

 var reg = /(\d+\.?\d*)/

【讨论】:

  • 不会匹配像“1”或“5”这样的单数
  • @JoaoRaposo:不,但这似乎不是 OP 想要的。将第二组设为可选很容易,然后就可以了。
猜你喜欢
  • 2011-03-27
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多