我可以使用正则表达式在产品页面上找到最便宜的价格吗?
Can I use regex to find the cheapest price on a product page?
我正在尝试构建一个动态脚本来从我客户的网站上获取价格,然后使用广告定制器将其插入到广告中。有些产品页面很简单,因为它们只有一个价格,但在某些情况下有多个。我将如何编写一个脚本,使用正则表达式匹配页面上的任何价格,然后 returns 最便宜的?
你不能用正则表达式做到这一点,至少在没有完全疯狂的情况下不能。 Regex 是一种匹配字符(数字、字母等)的工具。它对字符的含义一无所知。通常,您可以使用它从另一个文本中提取文本的某些部分,但要执行数值比较,您需要将文本转换为数字,例如使用适当的编程语言。
正则表达式有其局限性。它会匹配价格,但您需要一个脚本来处理正则表达式为您找到的信息。
假设您的问题主要是关于找到最便宜的价格,下面是一个脚本,它将获取变量 pageText,从中提取货币数字,转换为整数,然后获取最低的数字。
var pageText = ".54, hello there king cupid. .32 & of course
. 0,000.54";
var pricesRegex = /($[0-9,]+(\.[0-9]{2})?)/g;
var parsedPrices = pageText.match(pricesRegex);
var numbers = [];
parsedPrices.map((price) => {
numbers.push(Number(price.replace(/,/g, '').split("$")[1]));
});
var cheapestPrice = Math.min.apply(null, numbers);
我正在尝试构建一个动态脚本来从我客户的网站上获取价格,然后使用广告定制器将其插入到广告中。有些产品页面很简单,因为它们只有一个价格,但在某些情况下有多个。我将如何编写一个脚本,使用正则表达式匹配页面上的任何价格,然后 returns 最便宜的?
你不能用正则表达式做到这一点,至少在没有完全疯狂的情况下不能。 Regex 是一种匹配字符(数字、字母等)的工具。它对字符的含义一无所知。通常,您可以使用它从另一个文本中提取文本的某些部分,但要执行数值比较,您需要将文本转换为数字,例如使用适当的编程语言。
正则表达式有其局限性。它会匹配价格,但您需要一个脚本来处理正则表达式为您找到的信息。
假设您的问题主要是关于找到最便宜的价格,下面是一个脚本,它将获取变量 pageText,从中提取货币数字,转换为整数,然后获取最低的数字。
var pageText = ".54, hello there king cupid. .32 & of course
. 0,000.54";
var pricesRegex = /($[0-9,]+(\.[0-9]{2})?)/g;
var parsedPrices = pageText.match(pricesRegex);
var numbers = [];
parsedPrices.map((price) => {
numbers.push(Number(price.replace(/,/g, '').split("$")[1]));
});
var cheapestPrice = Math.min.apply(null, numbers);