使用JavaScript从字符串中删除除空格之外的所有特殊字符

nit*_*thi 124 javascript special-characters

我想使用JavaScript从字符串中删除除空格之外的所有特殊字符.

例如, abc's test#s 应输出为 abcs tests.

Pet*_*nov 294

您应该使用单个正则表达式的字符串替换功能.假设有特殊字符,你的意思是不是字母,这是一个解决方案:

var str = "abc's test#s";
alert(str.replace(/[^a-zA-Z ]/g, ""));
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于非英语单词,例如"Термінатор" (61认同)
  • 实际上你需要这个 `str.replace(/[^a-zA-Z0-9 ]/g, "");` 注意在 0-9 和 ] 之间有一个空格 (9认同)
  • @tech_geek,您可以执行str.replace(/ [^ a-zA-Z0-9] / g,“”)` (7认同)
  • 要在非拉丁字母表上使用此解决方案,请查看[此答案](/sf/answers/10505491/) (3认同)
  • 这也将删除数字字符! (3认同)

小智 107

您可以指定要删除的字符:

string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Run Code Online (Sandbox Code Playgroud)

或者,要更改除数字和字母之外的所有字符,请尝试:

string = string.replace(/[^a-zA-Z0-9]/g, '');
Run Code Online (Sandbox Code Playgroud)

  • @Arbaz禁止保留空格,只需将其添加到列出的白色字符中即可。您的正则表达式将为“ / [^ a-zA-Z0-9] / g”(注意9后的空格) (5认同)
  • 如果我不想使用此删除空间怎么办?`/ [^ A-ZA-Z0-9]/g` (4认同)

Sea*_*ull 27

第一种解决方案不适用于任何UTF-8字母表.(它将剪切诸如Привіт之类的文本).我设法创建了一个不使用RegExp的函数,并在JavaScript引擎中使用了良好的UTF-8支持.如果符号大写相等,这个想法很简单,小写则是一个特殊字符.唯一的例外是空白.

function removeSpecials(str) {
    var lower = str.toLowerCase();
    var upper = str.toUpperCase();

    var res = "";
    for(var i=0; i<lower.length; ++i) {
        if(lower[i] != upper[i] || lower[i].trim() === '')
            res += str[i];
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

更新:请注意,此解决方案仅适用于小写和大写字母的语言.在像中文这样的语言中,这是行不通的.


小智 11

const str = "abc's@thy#^g&test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
Run Code Online (Sandbox Code Playgroud)


Thi*_*aes 10

我不懂JavaScript,但使用正则表达式是不是可行?

喜欢的东西[^\w\d\s]会匹配任何东西,但数字,字符和空格.在JavaScript中查找语法只是一个问题.


dov*_*vid 9

搜索所有不是(单词字符 || 空格):

str.replace(/[^\w ]/, '')
Run Code Online (Sandbox Code Playgroud)


Moz*_*fet 8

我尝试了Seagul非常有创意的解决方案,但发现它也将数字视为特殊字符,这不符合我的需要.所以这是我对Seagul解决方案的(故障安全)调整......

//return true if char is a number
function isNumber (text) {
  if(text) {
    var reg = new RegExp('[0-9]+$');
    return reg.test(text);
  }
  return false;
}

function removeSpecial (text) {
  if(text) {
    var lower = text.toLowerCase();
    var upper = text.toUpperCase();
    var result = "";
    for(var i=0; i<lower.length; ++i) {
      if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}
Run Code Online (Sandbox Code Playgroud)


小智 8

尝试使用这个

var result= stringToReplace.replace(/[^\w\s]/g, '')
Run Code Online (Sandbox Code Playgroud)

[^]用于否定、\w用于[a-zA-Z0-9_]单词字符、\s用于空格、 /[]/g用于全局


小智 7

用正则表达式

let string  = "!#This tool removes $special *characters* /other/ than! digits, characters and spaces!!!$";

var NewString= string.replace(/[^\w\s]/gi, '');
console.log(NewString); 
Run Code Online (Sandbox Code Playgroud)

结果 //该工具删除除数字字符和空格之外的特殊字符

实例:https: //helpseotools.com/text-tools/remove-special-characters