繁体   English   中英

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

[英]Remove specific multiple ending characters on a string

我想删除某些字符,当它们在字符串的末尾 我有一个正则表达式,但是问题如下:

我的代码:

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

所以让我们看看问题

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

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

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

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

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

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

演示

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

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

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

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

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

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

使用一个字符组并在/[(,:;\\-–#\\.\\s]*$/末尾/[(,:;\\-–#\\.\\s]*$/

 const sanitize = text => text.replace(/[(,:;\\-–#\\.\\s]*$/, ''); console.log(sanitize('this is a nice,:;-–#.')); console.log(sanitize('this is a nice ( ')); console.log(sanitize('this is a nice ( #')); console.log(sanitize('this is a nice (:- ')); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM