我正在阅读一本 JS 书籍,并在示例中发现了以下正则表达式。
(parseFloat(filter.match(/opacity=([^)]+/)[1]) / 100)
其中filter="alpha(opacity=50)"
。我了解代码在做什么,并且要解析的返回匹配是数组中的第二个索引,即捕获 ([^)
,但我不明白该捕获如何使任何感觉。 ([^)]+
如何匹配不透明度值?据我了解,如果插入符号用作第一个字符,那么它将匹配以后面的任何内容开头的字符串,或者如果它在字符类中使用,它将匹配除类中的内容之外的任何内容,例如[^abc]
。
但是在这种情况下,插入符号似乎没有执行任何这些操作,因为右方括号位于括号之外。可以说,我很困惑。
最佳答案
[^)]+
正在获取不是右括号 )
的任何字符序列。
正如 @jonny 指出的,缺少右括号。应为 /opacity=([^)]+)/
。
模式为 /
opacity=([^)]+)
/
其中 opacity=
均为文字字符和 [^)]+
应与您需要的值匹配。重点关注方括号,而不是圆括号。
有了这个,我相信 filter.match(
/opacity([^)]+)/
)
将返回 位置
,位置[0]
处为opacity=50[1]
处为50
。
filter.match(/opacity=([^)]+/)
)[1]
返回数组位置 [1]< 中的部分
.
然后,parseFloat
启动并将字符串 50
转换为一个数字,最后除以 100
。
关于跨浏览器不透明度的javascript正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085486/