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

标签 javascript regex

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

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

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

无论如何,看起来正则表达式结束了,因为在最后提到的+之后,有一个/。这是否表明正则表达式的终止?之后立即调用捕获[1]。所以也许它实际上还没有结束..?

任何帮助准确理解这里发生的事情的信息都将受到赞赏。正则表达式感谢 javascript ninja book

最佳答案

[^)]+ 并不意味着“忽略右括号”,它的意思是“收集尽可能多的字符(至少一个),即除右括号之外的任何字符。在其他情况下单词,直到下一个右括号的所有内容。

关于javascript - 关于理解正则表达式的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17439775/

相关文章:

javascript - "user validation failed: passsword: Path ` 密码 ` is required."

javascript - "is not allowed by Access-Control-Allow-Origin"内网Windows服务器之间

regex - 分号后的字母大写

R 效率挑战 : Splitting a long character vector

Java正则表达式用特殊字符替换字符串

javascript - 如何通过JavaScript中的reg表达式检查输入的数字是4位还是7位,然后相应地执行函数hexToRGB?

javascript - Excel 到 Javascript - 忽略从 Excel 复制的列中的换行符

java - 正则表达式删除java中的特殊字符

java - 如何在 Java 中使用正则表达式非捕获组进行字符串替换

javascript - if (typeof myFunction !== 'function' ) – 为什么它在 Safari 中不起作用?