使用javacsripts新的RegExp()函数进行正面预测

时间:2017-10-06 13:08:24

标签: javascript node.js regex lookahead

我有以下情况:

var x = "dot.test:semicolon;exclamation!Question?";
var separators = ['\\\!', '\\\.', '\\\(', '\\\)', ':', ';', '\\\?'];
var tokens = x.split(new RegExp(separators.join('|'), 'g'));

//expected output : ['dot.', 'test:', 'semicolon;', and so on...]

这很好用。我现在想将RegExp转换为正向前瞻性表达式,它将分隔符保留在String中。我不确定如何使用javascripts new RegExp()函数执行此类操作。我想包括[A-Z] [a-z] [0-9]以及所有其他符号,因为我将解析普通文本并希望在每种情况下都保留分隔符。

我真的很感激一些建议!

1 个答案:

答案 0 :(得分:1)

您似乎希望匹配除数组中定义的字符之外的任何字符,然后匹配那些字符(如果存在)。使用



var x = "dot.test:semicolon;exclamation!Question?";
var separators = ['!', '.', '(', ')', ':', ';', '?'];
var tokens = x.match(new RegExp("[^" + separators.join('') + "]+[" + separators.join('') + "]*", "g"));
console.log(tokens);




如果您想展开分隔符列表,并不是说您只需要转义-,\]^