gpt4 book ai didi

javascript - 如果以字符开头,正则表达式不匹配?

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:04 25 4
gpt4 key购买 nike

我有这个正则表达式:

/(((\w+)|(\.\w+)|(\#\w+)|\*)(\[(.+(=".+"|\*".+"|\^".+"|))\])?(::|:)?)+(?=[\S]*\{)/gm

我试图用它来匹配 CSS 选择器。考虑这个伪代码 CSS 输入:

.main {
property: value;
}

.one, .two a[href$=".com"] {
.subclass {
property: value;
}
}

.test:before, .test:after:active {}

上面的模式将返回以下匹配项:

['.body', '.one', '.two', 'a[href$=".com"]', '.subclass', '.test:before', '.test:after:active']

我正在尝试修改模式以使伪选择器不匹配。所以所有其他匹配应该仍然有效,但是 .test:before 应该只是 .test.test:after:active 也应该只匹配 .test。如果第一个字符是 :,我想不出没有负面回顾或不匹配的方法。

我正在 Node 中实现它,我不想将我的脚本锁定到 Node > 9.2.0 只是为了在我的正则表达式中使用负面回顾。

任何想法将不胜感激!

最佳答案

(?!.*:)(?:[.#]\w+|\w+\[.*\])

你可以使用这样的东西吗?

这使用否定前瞻来确保它不会捕获旁边带有冒号的任何内容,以及对伪 css 元素使用匹配器的简化版本。

See it working here

关于javascript - 如果以字符开头,正则表达式不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com