使用 javacsripts new RegExp() 函数的正面前瞻
Positive Lookahead with javacsripts new RegExp() function
我遇到了以下情况:
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 转换为正前瞻表达式,它将分隔符保留在字符串中。我不确定如何使用 javascripts new RegExp()
函数做这样的事情。我想包括 [A-Z][a-z][0-9] 和所有其他符号,就像我将解析普通文本一样,并且希望在每种情况下都保留分隔符。
非常感谢您的建议!
您似乎想要匹配数组中定义的字符以外的任何字符,然后再匹配那些字符(如果存在)。使用
var x = "dot.test:semicolon;exclamation!Question?";
var separators = ['!', '.', '(', ')', ':', ';', '?'];
var tokens = x.match(new RegExp("[^" + separators.join('') + "]+[" + separators.join('') + "]*", "g"));
console.log(tokens);
并不是说如果您想扩展分隔符列表,您只需要转义 -,
、\
、]
和 ^
。
我遇到了以下情况:
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 转换为正前瞻表达式,它将分隔符保留在字符串中。我不确定如何使用 javascripts new RegExp()
函数做这样的事情。我想包括 [A-Z][a-z][0-9] 和所有其他符号,就像我将解析普通文本一样,并且希望在每种情况下都保留分隔符。
非常感谢您的建议!
您似乎想要匹配数组中定义的字符以外的任何字符,然后再匹配那些字符(如果存在)。使用
var x = "dot.test:semicolon;exclamation!Question?";
var separators = ['!', '.', '(', ')', ':', ';', '?'];
var tokens = x.match(new RegExp("[^" + separators.join('') + "]+[" + separators.join('') + "]*", "g"));
console.log(tokens);
并不是说如果您想扩展分隔符列表,您只需要转义 -,
、\
、]
和 ^
。