删除字符串上特定的多个结尾字符

时间:2019-03-11 09:39:08

标签: javascript regex

我要删除某些字符,当它们位于字符串的时。我有一个可运行的正则表达式,但问题如下:

我的代码:

var text = "some string";
text.replace(/\,$|:$|;$|-$|\($|–$|#$|\.$/, '');

让我们看看问题所在

如果为text = "that a nice (”,那么我的代码将输出"that a nice ",这正是我想要的。

但是如果文本具有多个匹配项,例如

text = "that a nice ( #",那么我当前代码的输出是:"that a nice ( " ...但是我想同时删除(到字符串的末尾,如您所见在我的正则表达式上。我需要修剪它,以便删除空白,然后如何删除(再次...

问题是如何删除所有不需要的字符,并确保新输出的(新)末尾也不包括这些字符?最后我可能有2、3或任意数量的不需要的字符

5 个答案:

答案 0 :(得分:1)

您可以使用模式:(\s*[#(])+$

\s*[#(]匹配零个或多个空格,然后匹配方括号中的一个或多个字符,您应在其中列出所有不需要的字符。然后在ro上多次匹配整个模式。 $匹配字符串的结尾,以确保我们位于字符串的结尾。

Demo

答案 1 :(得分:0)

使用此正则表达式并尝试:

/(\s*[-,:;\(#\.])*$/

答案 2 :(得分:0)

您可以使用带有+量词的字符类,该量词应包含\s(空格):

var text = "that a nice ( #";
text = text.replace(/[-,\s(){}:;(#.–]+$/, '');
console.log(text);

答案 3 :(得分:0)

这将删除所有不需要的字符并保留一个空格。

var test = [
    "that a nice (",
    "that a nice ( #",
];
console.log(test.map(function (a) {
  return a.replace(/[-,:;(#.–](?:\s*[-,:;(#.–])*$/, '');
}));

答案 4 :(得分:0)

使用字符组并在value末尾随时进行匹配:

/[(,:;\-–#\.\s]*$/