exec未在arr [1]中返回匹配项-n

1252748

我有一个正则表达式,我正用来尝试从getComputedStyle对象中获取一些值我希望exec在每次从索引1开始的迭代中针对它运行时,都可以找到我的匹配项,但是在每次迭代中,都会向其中添加两个新元素,myArray并且之前未设置的元素现在未定义。

var styleAsDashedStr = window.getComputedStyle(document.getElementById("container")).cssText;
var styleRe = /(?:;\s?(background.*?)\:\s?(.*?);)|(?:;\s?(font.*?)\:\s?(.*?);)|(?:;\s?(border.*?)\:\s?(.*?);)|(?:;\s?(margin.*?)\:\s?(.*?);)|(?:;\s?(padding.*?)\:\s?(.*?);)/g;
//var individuallySetStyles = styleAsDashedStr.match(styleRe);

var myArray;
while ((myArray = styleRe.exec(styleAsDashedStr)) !== null) {
    console.log(myArray);
}

第一次迭代

0: "; background-blend-mode: normal;"
1: "background-blend-mode"
2: "normal"
3: undefined
4: undefined
5: undefined
6: undefined
7: undefined
8: undefined
9: undefined
10: undefined

随后的迭代定义了两个元素,而其他八个则没有。有没有一种方法可以获取其中当前捕获的元素一和元素二的数组?

尖尖的

您可以累积一个对象来保存找到的规则:

var myArray, rules = {};
while ((myArray = styleRe.exec(styleAsDashedStr)) !== null) {
    console.log(myArray);
    if (myArray[1] && myArray[2])
      rules[myArray[1]] = myArray[2];
}

这样,您最终将得到一个包含所有匹配属性的对象。

您也可以简化您的正则表达式(就像我在编辑时Barmar给出的答案一样:)。

编辑-使用图案的一个问题是,你的“节”作为开始和结束;当您匹配某项内容时,匹配项将同时包含开始的分号和其后的分号下一个匹配项将匹配的分号之后开始,因此需要前导分号的模式部分将失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript regex exec()返回列表中重复的匹配项,为什么?

来自分类Dev

在默认构造函数中声明arr时,未在此范围中声明“ arr”

来自分类Dev

在 Excel 列表中查找第 n 个匹配项

来自分类Dev

更准确的平均方法是ARR [0] / N + ARR [1] / N ... + ARR [N-1] / N或(ARR [0] + ARR [1] ... + ARR [ N-1])/ N是否为两倍?

来自分类Dev

为什么行得通?“乘(arr,n)==乘(arr,n-1)* arr [n-1]”

来自分类Dev

这里的T(&arr)[N]中的arr是什么类型

来自分类Dev

MySQL仅返回具有n个属性匹配项的项目

来自分类Dev

为什么编译器未在参数中传递数组char * arr []的大小?

来自分类Dev

使用OR函数从数组中返回N个匹配结果

来自分类Dev

检测向量中的第n个重复项(以及n + 1项...)

来自分类Dev

替换字符串的第1到第n个匹配项。javascript

来自分类Dev

替换字符串的第1到第n个匹配项。javascript

来自分类Dev

返回VBA列中的匹配项

来自分类Dev

返回数组中匹配项的索引号

来自分类Dev

Heroku环境变量$ DATABASE_URL和$ PORT未在dyno中显示(heroku ps:exec)

来自分类Dev

项未在Angular中居中

来自分类Dev

JavaScript:使用 .exec() 查找连续匹配项

来自分类Dev

尽管存在匹配,但VLOOKUP返回#N / A(= A1 = B1 ==“ TRUE”)

来自分类Dev

尽管存在匹配,但VLOOKUP返回#N / A(= A1 = B1 ==“ TRUE”)

来自分类Dev

与JavaScript中的exec匹配

来自分类Dev

如何将匹配项截断为n个字符以在preg_replace中替换?

来自分类Dev

如何获得R中两个向量之间的元素的第n个匹配项?

来自分类Dev

如何替换字符串中的第n个匹配项

来自分类Dev

如何替换字符串中的第n个匹配项

来自分类Dev

arr.push(arr.splice(n,1)) “吞噬”移动对象的属性

来自分类Dev

为什么用arr [:] [np.newaxis] .shape =(1,n)而不是(n,1)?

来自分类Dev

arr.findIndex()返回-1

来自分类Dev

从第n个匹配项分配匹配变量

来自分类Dev

在C ++中,大小为n的布尔数组的声明是否保证对于每个arr [n]为0?

Related 相关文章

  1. 1

    JavaScript regex exec()返回列表中重复的匹配项,为什么?

  2. 2

    在默认构造函数中声明arr时,未在此范围中声明“ arr”

  3. 3

    在 Excel 列表中查找第 n 个匹配项

  4. 4

    更准确的平均方法是ARR [0] / N + ARR [1] / N ... + ARR [N-1] / N或(ARR [0] + ARR [1] ... + ARR [ N-1])/ N是否为两倍?

  5. 5

    为什么行得通?“乘(arr,n)==乘(arr,n-1)* arr [n-1]”

  6. 6

    这里的T(&arr)[N]中的arr是什么类型

  7. 7

    MySQL仅返回具有n个属性匹配项的项目

  8. 8

    为什么编译器未在参数中传递数组char * arr []的大小?

  9. 9

    使用OR函数从数组中返回N个匹配结果

  10. 10

    检测向量中的第n个重复项(以及n + 1项...)

  11. 11

    替换字符串的第1到第n个匹配项。javascript

  12. 12

    替换字符串的第1到第n个匹配项。javascript

  13. 13

    返回VBA列中的匹配项

  14. 14

    返回数组中匹配项的索引号

  15. 15

    Heroku环境变量$ DATABASE_URL和$ PORT未在dyno中显示(heroku ps:exec)

  16. 16

    项未在Angular中居中

  17. 17

    JavaScript:使用 .exec() 查找连续匹配项

  18. 18

    尽管存在匹配,但VLOOKUP返回#N / A(= A1 = B1 ==“ TRUE”)

  19. 19

    尽管存在匹配,但VLOOKUP返回#N / A(= A1 = B1 ==“ TRUE”)

  20. 20

    与JavaScript中的exec匹配

  21. 21

    如何将匹配项截断为n个字符以在preg_replace中替换?

  22. 22

    如何获得R中两个向量之间的元素的第n个匹配项?

  23. 23

    如何替换字符串中的第n个匹配项

  24. 24

    如何替换字符串中的第n个匹配项

  25. 25

    arr.push(arr.splice(n,1)) “吞噬”移动对象的属性

  26. 26

    为什么用arr [:] [np.newaxis] .shape =(1,n)而不是(n,1)?

  27. 27

    arr.findIndex()返回-1

  28. 28

    从第n个匹配项分配匹配变量

  29. 29

    在C ++中,大小为n的布尔数组的声明是否保证对于每个arr [n]为0?

热门标签

归档