javascript - 如何创建一个正则表达式来选择不以 '#' 或 '.' 开头的单词

标签 javascript regex

我想创建一个 JavaScript 函数,它可以查看一串 CSS 选择器,并从其他选择器(例如 ID 和类)中选择作为标签名称( body 、 p 、 h1 )的元素( #test .test1 )

一个例子是字符串: “span#a53195yio1rnin6d2t9 div.first”

只返回span和div,剩下的

这是我到目前为止所拥有的,但它选择“#”或“.”之后的所有内容

(\b(?!#|!.)\w+)\b

最佳答案

如果您的环境支持lookbehind,只需向后查找空格或行开头:

const str = "span#a53195yio1rnin6d2t9 div.first";
console.log(
  str.match(/(?:^|(?<= ))\w+/gm)
);

否则,如果您必须支持旧版浏览器,则必须手动迭代匹配 - 匹配字符串或空格的开头,然后捕获组中的下一个单词字符,并提取该捕获组:

const str = "span#a53195yio1rnin6d2t9 div.first";
const re = /(?:^| )(\w+)/gm;
const matches = [];
let match;
while (match = re.exec(str)) {
  matches.push(match[1]);
}
console.log(matches);

关于javascript - 如何创建一个正则表达式来选择不以 '#' 或 '.' 开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367828/

相关文章:

python - 为什么正则表达式模式不仅仅在Python中匹配?

C# Regex Lazy Quantifier 不匹配预期值

php - 使用正则表达式计算具有特定内容的 php 脚本

javascript - 从 JQuery Ajax 处理 FileResult

javascript - bootstrapValidator ajax提交错误 "404 Page Not Found"

Javascript 与 PHP——框架与库

regex - 显示匹配模式的 vim 缓冲区

PHP 正则表达式删除 <h1> 标签(及其内容)

javascript - 使用 Node js 取回 Twitch API 的访问 token

javascript - 当我单击元素数学/物理/化学时如何使用 jquery 获取跨度 ID