需要删除句子中部的特殊字符,但不删除字符串的开头和结尾

时间:2019-06-05 09:56:58

标签: javascript regex

我有一个字符串

string= "& & This is&test release & this is rest release &";
Output ="& & This istest release  this is rest release &"

输入:

string ="& & This is&test release & this is rest release &";

输出应为

"& & This istest release  this is rest release &";

但是获得输出的是

"& & This istest release & this is rest release &";

我的代码:

var str = "& & & This is&test release * this is rest release & &";
var str2="";
var str1=str.split(' ');
for(var i=0;i<str1.length;i++) {
 if(/^[0-9a-zA-Z]/.test(str1[i])) { 
   str1[i]=str1[i].replace(/[^a-zA-Z ]/g, "") 
 }
 str2=str1.join(' ');
}
console.log(str2); 

4 个答案:

答案 0 :(得分:0)

我不确定这里的字符串中的空格(您实际上是否需要它们,但这是您可以尝试的替代方法)

let string = "& & This is&test release & this is rest release &";

let a = string.split("&").map(el => {
  if (el == "" || el == " ") {
    el = " &"
    }
  return el
})
let result = a.join(""); // join acc to gap you want
console.log(result)

答案 1 :(得分:0)

尝试

let s= "& & This is&test release & this is rest release &";

let o= s.replace(/^([& ]*)(.*?)([& ]*)$/, (m,a,b,c)=> a+b.replace(/&/g,'')+c);

console.log(o);

答案 2 :(得分:0)

这是我想出的东西,可以与任何特殊字符一起使用。

var str = "& & This is&test _&&release & this_is rest release &";
var replacedString = str.replace(/(\w\s*)([^a-zA-Z0-9]+)(\s*\w)/g, "$1 $3"); 
console.log(replacedString);

输出:

& & This is test  release  this is rest release &

替换模式将在任何字母数字字符之间匹配任意数量的特殊字符。

答案 3 :(得分:0)

这是什么?它完美地工作。 我将字符串拆分为开始,中间和结尾。然后只在中间替换特殊字符,然后将这3个部分全部合并回去。

string= "& & This is&test release & this is rest release &";

i=string.search(/[\w\s]/i)//first letter
j=string.search(/[\w\s][^\w\s]*$/i)//last letter

start=string.substr(0,i)
middle= string.substr(i,j-i+1)
end=string.substr(j+1)

middle=middle.replace(/[^\w\s]/gi,"")//replace only in the middle

output=start+middle+end

console.log(output)

希望我能帮助您