javascript - 正则表达式查找不在两个其他字符之间出现的所有字符

标签 javascript regex regex-lookarounds

我正在寻找一个正则表达式(我可以在Javascript中实现,所以没有后向查找),它将匹配一个字符的所有出现,只要它不出现在两个其他字符之间。例如,我想匹配所有连字符,只要它们不在加号之间即可。

----- // should match.
+---+ // should not match
---+---+--- // should only match the first 3 and last 3 characters.

我已经尝试调整 this post 中使用的方法像这样:

[-]+(?![^+]*\+)+

但它不符合预期。任何帮助是极大的赞赏。

附注专门寻找REGEX解决方案。我意识到这可能不是最佳解决方案,但我特别想提高我对正则表达式的了解。

最佳答案

如果分隔符(在您的情况下是+)总是成对出现,您可以使用:

var str = 'a-b-+-c-+-d-e'; // delimter is +
matches = str.match(/-(?=([^+]*\+[^+]*\+)*[^+]*$)/g, '');
console.log(matches); // 4 matches of `-`

这与后面有偶数个加号(可能为零)的每个连字符相匹配。

关于javascript - 正则表达式查找不在两个其他字符之间出现的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615257/

相关文章:

java - Java中具有可变长度零宽度lookbehind的正则表达式

regex - 捕获组的负前瞻

php - 使用 javascript 的简单 php 网站

javascript - 如何使用 jQuery SlideDown() 显示_几乎_所有内容?

javascript - 使 Dygraps 图表背景网格更亮

python - 为什么 python 在 re 中卡住(挂起)?

python - 计算字符串中某个子串的重复出现次数

android - 从 html 字符串中删除多余的 "a href"标签

javascript - 如何验证简单的 Web 表单

javascript - 用于匹配 N 位数字加连续数字的正则表达式