https://regex101.com/r/sB9wW6/1
function(chart) {
var value1 = chart.series[1].data[23].y,
value2 = chart.series[1].data[24].y;
chart.series[0].addPoint({
x: 23.5,
y: (value1 + value2) / 2,
details: 'this is an accident'
});
}
< - 正向背后的问题
在(?:(?<=\s)|^)@(\S+)
:prod
上这样工作,但我需要一个正确的起始索引(没有空格)。
这是JS:
(?:\s|^)@(\S+)
解析正则表达式时出错:正则表达式无效: /(?:?(小于= \ S)| ^)@(\ S +)/
我做错了什么?
更新
好的,JS中没有任何后盾:(
但无论如何,我需要一个正则表达式来获得匹配的正确开始和结束索引。没有领先的空间。
答案 0 :(得分:4)
JS正则表达式不支持lookbehinds。你真的不需要它,因为你可以使用捕获组:
var re = /(?:\s|^)@(\S+)/g;
var str = 's @vln1\n@vln2\n';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[1]);
}
console.log(res);
(?:\s|^)@(\S+)
将空格或字符串的开头与(?:\s|^)
匹配,然后匹配@
,然后匹配并捕获到组1中一个或多个带有(\S+)
的非空白字符。
要获取开始/结束索引,请使用
var re = /(\s|^)@\S+/g;
var str = 's @vln1\n@vln2\n';
var pos = [];
while ((m = re.exec(str)) !== null) {
pos.push([m.index+m[1].length, m.index+m[0].length]);
}
console.log(pos);