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

Javascript 关于理解正则表达式的几个问题,javascript,regex,Javascript,Regex,如果元素有不透明度值,这个正则表达式应该捕获该元素的不透明度值,但我对它的作用有点困惑: function getOpacity(elem) { var filter = elem.style.filter; return filter ? filter.indexOf("opacity=") >= 0 ? (parseFloat(filter.match(/opacity=([^)]+)/)[1]) / 100) + "" : "" : elem.style.o

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

function getOpacity(elem) {
    var filter = elem.style.filter;
    return filter ? 
    filter.indexOf("opacity=") >= 0 ? (parseFloat(filter.match(/opacity=([^)]+)/)[1]) / 100) + "" : "" : elem.style.opacity;
}
似乎这里正在进行捕获
([^)]+
。在它里面,一个或多个右括号应该被忽略
[^]+
。我想我一定是弄错了。一个或多个右括号会被忽略什么?那没有道理

无论如何,似乎正则表达式结束了,因为在最后提到的
+
之后,有一个
/
。这是否表示正则表达式的终止?紧接着,会调用捕获
[1]
。所以,也许它实际上还没有结束

非常感谢您能帮助我们准确了解这里发生的一切。RegEx curtesy的

[^]+
并不意味着“忽略右括号”,而是意味着“收集尽可能多的字符(至少一个),这些字符是右括号以外的任何字符。换句话说,所有字符直到下一个右括号为止。

[^]+
-表示1个或多个不是右括号的字符


因此对于
filter:alpha(opacity=50)
字符串,
/opacity=([^)]+)/
将匹配
50
/
终止正则表达式,而
[1]
部分将拉取数组中的第二个索引。(在本例中,第二个匹配)

几乎正确。
[^]+/code>意味着再匹配一个非“)“角色


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

[)]
匹配右括号,而
[^)]
匹配除右括号以外的任何内容。它们是对立的
[^]+
贪婪地匹配任意数量的不是右括号的连续字符。

@Blender:会的,但我找到了另一种语法-Poh,所以数组类似于
[filter:alpha(opacity=50,50)]
,第0个条目被忽略。非常好。谢谢。删除了我关于为什么不这样做的评论。这很有意义,只是尝试捕获里面的内容