javascript - 使用 javacsripts new RegExp() 函数的正面前瞻

标签 javascript node.js regex regex-lookarounds

我遇到了以下情况:

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);

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

关于javascript - 使用 javacsripts new RegExp() 函数的正面前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606483/

相关文章:

ruby-on-rails - 从 Heroku 上的列表中删除应用程序

Java 正则表达式匹配 <li> 前面没有 <br/>

javascript - 使用 Javascript 提交到特定按钮?

Javascript - 我的表单验证出现问题

javascript - javascript中的toString float

javascript - 无法在 settimeout 内将参数传递给 this.style

node.js - 从nodejs在mongodb中插入一大堆对象

javascript - 如何在 anchor 标记 (<a>) 中运行 onClick 和 href

node.js - 从 JSON 文件序列化 bulkCreate

javascript - 当数据不在范围内时如何使用正则表达式返回 false?