Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将regex与classname匹配,并在数组中返回innerHTML值_Javascript_Regex_Match - Fatal编程技术网

Javascript将regex与classname匹配,并在数组中返回innerHTML值

Javascript将regex与classname匹配,并在数组中返回innerHTML值,javascript,regex,match,Javascript,Regex,Match,我正在尝试开发javascript代码,将每个Span标记与类名“a-size-base a-color-price s-price a-text-bold”匹配,并在数组中返回它的innerhtml。所以基本上我需要数组列表中每个垃圾邮件的价格 有人能告诉我怎么做吗?因为我不知道如何把match函数和类名放在一起,并获取它的innerHTML 16.90欧元 20,09欧元 19.90欧元 12,90欧元您可以通过正则表达式获得span/class=value的价格。 你要找的是第二组 /“

我正在尝试开发javascript代码,将每个Span标记与类名“a-size-base a-color-price s-price a-text-bold”匹配,并在数组中返回它的innerhtml。所以基本上我需要数组列表中每个垃圾邮件的价格

有人能告诉我怎么做吗?因为我不知道如何把match函数和类名放在一起,并获取它的innerHTML

16.90欧元
20,09欧元
19.90欧元

12,90欧元
您可以通过正则表达式获得span/class=value的价格。
你要找的是第二组

/“][^”][^”]*“][^”][^']*”)*?\sclass\s*=\s*(?:(['“])\s*a-size-base\s*a-color-price\s*s-price\s-price\s*a-text-bold\s*\1))\s+(?:“[\s\s]*?”[s\s]*?“[\s]*?”[s]++>([\s\s]*)/

(警告,使用正则表达式解析html可能有危险)

刮刀系列
格式:

 < span 
 (?=                                                           # Assertion (a pseudo atomic group)
      (?: [^>"'] | " [^"]* " | ' [^']* ' )*?
      \s 
      class \s* = \s*                                               # class attribute
      (?:
           ( ['"] )                                                      # (1), # quote begin
           \s* 
           a-size-base \s* a-color-price \s* s-price \s* a-text-bold     # value to find
           \s* 
           \1                                                            # quote end
      )
 )
 \s+ 
 (?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+
 >
 ( [\S\s]*? )                                                  # (2), content
 </span \s* >
"'] | " [^"]* " | ' [^']* ' )*?
\
class\s*=\s*#class属性
(?:
(['”)#(1),#引用开始
\s*
要查找的a-size-base\s*a-color-price\s*s-price\s*a-text-bold#值
\s*
\1#报价结束
)
)
\s+
(?:“[\S\S]*?”|“[\S\S]*?”|[^>]*?)+
>
([\S\S]*?)#(2),内容

如果您的输入与所提供的示例类似,则应该可以:

// Since .querySelectorAll returns a NodeList and we want an
// Array we'll use the spread operator to make it one.
let prices = [...document.querySelectorAll('span.size-a-base')]
  .map(el => {
    // sample input was EUR 19,90 so we'll split on the space
    // and grab the price.
    let [currency, price] = el.textContent.trim().split(' ');
    return price;
  });

请在您的问题中发布您尝试的代码。
var prices=[…document.queryselectoral('span.a-size-base')].map(el=>el.textContent.split('')[1])我应该在…document.queryselectoral前面写些什么吗?这有什么用?它像document.getElementbyClassName吗?@JPqnp它像CSS一样工作selector@Jared史密斯:谢谢!那代码帮了大忙!但是有没有一种方法可以选择两个以上的字符,因为在代码的末尾是[1],它允许我只打印第一个字母字符,但我需要第一个、第二个、第三个和第四个字符。