我要删除某些字符,当它们位于字符串的端时。我有一个可运行的正则表达式,但问题如下:
我的代码:
var text = "some string";
text.replace(/\,$|:$|;$|-$|\($|–$|#$|\.$/, '');
让我们看看问题所在
如果为text = "that a nice (
”,那么我的代码将输出"that a nice "
,这正是我想要的。
但是如果文本具有多个匹配项,例如
text = "that a nice ( #"
,那么我当前代码的输出是:"that a nice ( "
...但是我想同时删除(
到字符串的末尾,如您所见在我的正则表达式上。我需要修剪它,以便删除空白,然后如何删除(再次...
问题是如何删除所有不需要的字符,并确保新输出的(新)末尾也不包括这些字符?最后我可能有2、3或任意数量的不需要的字符
答案 0 :(得分:1)
您可以使用模式:(\s*[#(])+$
\s*[#(]
匹配零个或多个空格,然后匹配方括号中的一个或多个字符,您应在其中列出所有不需要的字符。然后在ro上多次匹配整个模式。 $
匹配字符串的结尾,以确保我们位于字符串的结尾。
答案 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]*$/