javascript - 正则表达式组不排除点

标签 javascript regex

假设我有以下字符串:div.classOneA.classOneB#idOne

尝试编写一个从中提取类(classOneA、classOneB)的正则表达式。我能够做到这一点,但使用 Lookbehind assertion仅有的。

看起来像这样:

'div.classOneA.classOneB#idOne'.match(/(?<=\.)([^.#]+)/g)
> (2) ["classOneA", "classOneB"]

现在我想在不使用回顾方法的情况下将其存档,并且不真正理解为什么我的解决方案不起作用。

'div.classOneA.classOneB#idOne'.match(/\.([^.#]+)/g)
> (2) [".classOneA", ".classOneB"]

以为分组会解决我的问题,但所有匹配项也都包含点。

最佳答案

在 Javascript 中没有一种同时匹配多次(/g 选项)和获取捕获组(在括号中)的好方法。试试这个:

var input = "div.classOneA.classOneB#idOne";
var regex = /\.([^.#]+)/g;

var matches, output = [];
while (matches = regex.exec(input)) {
    output.push(matches[1]);
}

关于javascript - 正则表达式组不排除点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55146322/

相关文章:

javascript - 如何使用 jquery 在旧的之上添加更多边距?

javascript - React 服务器渲染,将 HTML 获取到浏览器

java - 如何匹配URL中的单词(字符串)

python - 匹配除字母以外的任何内容 - 正则表达式

java - 使用正则表达式从 Java 中的匹配字符串中提取组

javascript - 在 Javascript 数组中查找字符串键

javascript - 在 Bootstrap 3 中将 javascript 图像居中

javascript - 提交前更改表单的键名、值和操作 URL

强制在 Jtextfield 中包含数字和字符的 Java 代码

java - 如何在 Java 中声明匹配模式?