Javascript拆分带有多个分隔符和表达式的字符串

javascript split string with multiple delimeters and expressions

本文关键字:表达式 字符串 分隔符 拆分 Javascript      更新时间:2023-09-26

我有以下表达式:

where('publishedDate').gte(new Date('2015-08-21T20:37:45.176Z')).sort({ field: 'asc', test: -1 });

,我想用javascript的字符串解析成以下令牌::split(regex):

where
('publishedDate')
gte
(new Date('2015-08-21T20:37:45.176Z'))
sort
({ field: 'asc', test: -1 })

但是我很难想出一个合适的表达来表达它。任何帮助都非常感谢!

你可以使用这个:

/('w+)('(.+?')(?='.|;|$))/g

它在你的输入上运行良好。

演示:https://regex101.com/r/kV9lS4/1

如何只获得匹配的令牌:

var re = /('w+)('(.+?')(?='.|;))/g,
    str = "where('publishedDate').gte(new Date('2015-08-21T20:37:45.176Z'))" +
          ".sort({ field: 'asc', test: -1 });",
    result = [],
    arr;
while(arr = re.exec(str)) {
  result.push(arr[1]);
  result.push(arr[2]);
}

var re = /('w+)('(.+?')(?='.|;))/g,
    str = "where('publishedDate').gte(new Date('2015-08-21T20:37:45.176Z')).sort({ field: 'asc', test: -1 });",
    result = [],
    arr;
while(arr = re.exec(str)) {
  result.push(arr[1]);
  result.push(arr[2]);
}
document.getElementById('result').innerHTML = JSON.stringify(result, null, 2);
<pre id="result"></pre>