关于理解正则表达式的几个问题

a few questions on understanding a regex

本文关键字:几个问题 正则表达式 于理解      更新时间:2023-09-26

这个正则表达式应该捕获元素的不透明度值(如果它有),但我对它的作用有点困惑:

function getOpacity(elem) {
    var filter = elem.style.filter;
    return filter ? 
    filter.indexOf("opacity=") >= 0 ? (parseFloat(filter.match(/opacity=([^)]+)/)[1]) / 100) + "" : "" : elem.style.opacity;
}

这里似乎有一个正在进行的捕获([^)]+)。在它里面,一个或多个右括号应该被忽略[^)]+。我想我一定错了。一个或多个右括号会被忽略什么?这没有道理。

无论如何,regex似乎结束了,因为在最后提到的+之后,有一个/。这是否意味着regEx的终止?紧接着,存在对捕获CCD_ 5的调用。所以也许它实际上还没有结束。。?

如有任何帮助,我们将不胜感激。javascript忍者书籍的RegEx curtesy

[^)]+并不意味着"忽略右括号",它的意思是"收集尽可能多的字符(至少一个),即除右括号之外的任何字符。换句话说,直到下一个右括号的所有字符。

[^)]+-表示一个或多个不在括号内的字符。

因此,对于filter: alpha(opacity=50)字符串,/opacity=([^)]+)/将与50 匹配

/终止正则表达式,[1]部分提取数组中的第二个索引。(在这种情况下是第二次匹配)

你几乎做对了。[^)]+表示再匹配一个非")"字符。

是的,/标记正则表达式的结束。

[)]匹配一个右括号,而[^)]匹配任何是右括号的内容。他们是对立的。[^)]+贪婪地匹配任何数量的不在括号内的连续字符。