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个条目被忽略。非常好。谢谢。删除了我关于为什么不这样做的评论。这很有意义,只是尝试捕获里面的内容