NodeJS中的正则表达式:如果下一个字符不是点,则只有split()

时间:2017-01-10 15:55:43

标签: javascript regex node.js

以下内容可帮助我分割字符串:

  var separators = ['\\\.', '\\\(', '\\\)', ':', '\\\?', '\\\!', '\\\"', '\\\n'];
  var tokens = someString.split(new RegExp(separators.join('|'), 'g'));

每当有.字符串被拆分时。但是,我的文档有时会包含...,在这种情况下,我希望将字符串拆分三次,但只能在最后一个点之后。

为了说明,请考虑以下句子:

(1) I saw the dog. But I didn't care.
(2) The duck didn't see it coming...

(1)应该给我一个包含两个句子的数组。

(2)应该给我一个带一个句子的数组。

截至目前,(2)会给我一个包含3个句子的数组,因为有三个点。

我有什么方法可以轻松地做到这一点吗?

2 个答案:

答案 0 :(得分:3)

您可以使用此class A

之类的边界\b

/\b\s*\.\s*\b/g表示零个或多个空格

\s*匹配\.符号

Regex Demo

演示输出

.

答案 1 :(得分:0)

表示有两个以上.使用/([.]{2,})/g;

的字符串

const re = /([.]{2,})/g;
const str = `abc...def.ghi`;

var found = str.match(re);

console.log(found);

之后

您可以使用以下模式/([^.]+)/g

regex101

中的示例

const re = /([^.]+)/g;
const str = `abc.def.ghi`;

var found = str.match(re);
console.log(found);