跨浏览器不透明度的Javascript正则表达式

javascript regular expression for cross browser opacity

本文关键字:Javascript 正则表达式 不透明度 浏览器      更新时间:2023-09-26

我正在阅读一本JS书,我在一个例子中遇到了下面的正则表达式。

(parseFloat(filter.match(/opacity=([^)]+/)[1]) / 100)

其中filter="alpha(opacity=50)"。我理解代码正在做什么,并且要解析的返回匹配是数组中的第二个索引,这是捕获([^),但我不明白捕获如何有意义。([^)]+如何匹配不透明度值?据我所知,如果使用插入符号作为第一个字符,那么它将匹配以后面的任何开头的字符串,或者如果它在字符类中使用,它将匹配除以外的任何内容,例如[^abc]

然而,在这种情况下,看起来插入符号没有做这两件事,因为右方括号在圆括号外面。我只能说,我很困惑。

[^)]+正在获取非右括号)的任何字符序列。

正如@jonny指出的,缺少一个右括号。并且应该是/opacity=([^)]+)/

模式是/ opacity=([^)]+) /,其中opacity=都是文字字符,[^)]+应该匹配您需要的值。注意方括号,而不是圆括号。

这样,我相信filter.match( /opacity([^)]+)/ )将返回opacity=50位置[0]50位置[1]

filter.match(/opacity=([^)]+/) )[1]返回数组位置[1]的部分。

然后parseFloat启动并将字符串50转换为最后被100整除的数字