[英]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.