我使用|
突出显示管道/\|(.+?)\|/g
之间的所有字词,例如|mathSign|
; mathSign
将被点燃。
但是,在某些情况下,我们将双管||
写成另一个含义如下:
function |mathSign| (x) {
return |((x === 0 || isNaN(x)) ? x : (x > 0 ? 1 : -1))|;
}
该模式与|((x === 0 |
和| isNaN(x)) ? x : (x > 0 ? 1 : -1))|
匹配,这是错误的。正确的人应该忽略中间的||
。
我尝试使用lookahead
概念; /\|(.+?)\|(?!\|)/g
为了忽略管道是否跟着另一个管道,然而,仍然没有运气。
任何帮助将不胜感激。
请参阅我的Demo实际操作。
答案 0 :(得分:1)
认为你的意思是,
\|((?:\|\||[^|])+)\|
\|\|
- 出现||
时贪婪地匹配。|
- 或[^|]
- 匹配任何字符,但不匹配|
+
- 一次或多次。
var s = "function |mathSign| (x) {\n return |((x === 0 || isNaN(x)) ? x : (x > 0 ? 1 : -1))|; \n }";
alert(s.match(/\|((?:\|\||[^|])+)\|/g))