使用正则表达式删除带有省略号的未完成字符串

时间:2015-12-15 04:04:56

标签: javascript regex

我正在尝试从未完成 句子/单词中删除带有省略号的字符串,而不是使用省略号删除任何句子:

1. String ... String
2. String String Str...
3. String string String ...
4. String Strin... String
5. String String ... Stri==...

输出

1. String ... String
3. String string String ...

我的第一个想法是尝试迭代每个句子,但我认为正则表达式会更好(更好)。

正则表达式可以吗? 如果是这样怎么样?我尝试了几次正则表达式失败。

任何帮助都将受到赞赏。

ps :我无法发布实际字符串(公司政策),这就是我发布这些虚拟示例的原因。

修改

我尝试过正则表达式:

    /(\.*)\.\.\./mgi (I'm not an expert)

但在某些情况下会失败......

我将检索String数组中的每个句子,而不是一个庞大且凌乱的String。

基本上任何有未完成的单词或句子的东西我都需要放弃。 (任何在省略号之前都有单词或单个字符的东西)

2 个答案:

答案 0 :(得分:1)

是的,你基本上是在寻找[any character 1 or more times][...],这将是regexp:

\w+\.{3}

这假设省略号总是3点,如果不是,你可以改为\.+。使用它来查找要删除的句子,然后保留其他项目。

答案 1 :(得分:1)

我认为无效句子后面总会有...的单词。

在下面的正则表达式中,您可以放置​​任何实际上与您的单词分开的内容。现在,我放了.(空格字符)。

var str = `1. String ... String
2. String String Str...
3. String string String ...
4. String Strin... String
5. String String ... Stri==...`;

var cleaned = str.split('\n').filter(function (line) {
    return !line.match(/[^\. ]+\.{3}/);
}).join('\n');

console.log(cleaned);
/*
prints

1. String ... String
3. String string String ...
*/