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

使用JavaScript从字符串中删除除空格以外的所有特殊字符,javascript,special-characters,Javascript,Special Characters,我想使用JavaScript从字符串中删除除空格以外的所有特殊字符 比如说,, abc的测试#s 应该输出为 abcs测试要从字符串中删除哪些特殊字符,准备它们的列表,然后使用javascript替换函数删除所有特殊字符 var str = 'abc'de#;:sfjkewr47239847duifyh'; alert(str.replace("'","").replace("#","").replace(";","").replace(":","")); 或者,您可以对整个字符串运行循环,并

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

比如说,,
abc的测试#s
应该输出为
abcs测试要从字符串中删除哪些特殊字符,准备它们的列表,然后使用javascript替换函数删除所有特殊字符

var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));

或者,您可以对整个字符串运行循环,并将单个字符与ASCII代码进行比较,然后重新生成一个新字符串。

您应该使用带有单个正则表达式的字符串替换函数。 假设通过特殊字符,您指的是任何非字母的内容,下面是一个解决方案:

const str=“abc的测试”;

console.log(str.replace(/[^a-zA-Z]/g,”)我不懂JavaScript,但使用正则表达式难道不可能吗


类似于
[^\w\d\s]
的内容将匹配除数字、字符和空白以外的任何内容。在JavaScript中查找语法只是一个问题

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

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

第一种解决方案不适用于任何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;
}
函数删除特殊项(str){
var lower=str.toLowerCase();
var upper=str.toUpperCase();
var res=“”;

对于(var i=0;i我尝试了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 '';
}
//如果char是数字,则返回true
函数isNumber(文本){
如果(文本){
var reg=新的RegExp('[0-9]+$');
返回注册测试(文本);
}
返回false;
}
函数移除特殊(文本){
如果(文本){
var lower=text.toLowerCase();
var upper=text.toUpperCase();
var结果=”;
对于(var i=0;idot(.)可能并不特殊。我在Mozfet和Seagull的答案中添加了OR条件:

function isNumber (text) {
      reg = new RegExp('[0-9]+$');
      if(text) {
        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() === '') || (lower[i].trim() === '.')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}
函数isNumber(文本){
reg=新的RegExp('[0-9]+$');
如果(文本){
返回注册测试(文本);
}
返回false;
}
函数移除特殊(文本){
如果(文本){
var lower=text.toLowerCase();
var upper=text.toUpperCase();
var结果=”;
对于(var i=0;i搜索所有非(单词字符| |空格):

试着用这个

var result= stringToReplace.replace(/[^\w\s]/g, '')
[^]
表示否定,
\w
表示
[a-zA-Z0-9]
表示单词字符,
\s
表示空格,
/[]/g
用于全球

const input=`if#u 1$(合同签订日期)='23-09-2019'
Test27919#elseif 1$(公共关系合同开始日期)=‘2019年9月20日’#
发件人539#elseif_1$(PR_账户ID)==“1234”#
AdestraSID#else#Test27919#endif#;
const replaceString=input.split(“$(”).join(“->”).split(“).join(“尝试以下操作:

const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);
const strippedString=htmlString.replace(/(]+)>)/gi,”;
console.log(strippedString);
const str=“abc”s@thy#^g&test#s”;


console.log(str.replace(/[^a-zA-Z]/g,”))
如何定义特殊字符?不,请不要这样做。它的速度非常慢。使用正则表达式要好得多。此解决方案非常适合只替换一个字符。在我的情况下,它非常有用,谢谢。与其多次使用replace方法,不如只使用正则表达式使用一次。谢谢对于这个颇具创造性的解决方案,它更符合语言是如何工作的,因为我们中的许多人没有考虑到“特殊字符。大多数解决方案都会删除任何不属于英文字母表的字符。这几乎是我的完美答案,但不幸的是,它认为汉字是特殊字符。@Ericmayerus和hindi Too小心,这也会将数字视为特殊字符。如果我不想使用此选项删除空格,该怎么办
/[^a-zA-Z0-9]/g
@ArbazAbid要保留空格,只需将其添加到白名单字符中。您的正则表达式将是“/[^a-zA-Z0-9]/g”(注意9后面的空格),如果需要空格,这是有效的答案。这将替换字符串
空格和
空格
这个正则表达式代表什么?除了字母数字字符以外的任何东西?正则表达式中的否定符号是什么?这是您问题的答案:)若要在非拉丁字母表上使用此解决方案,请检查这也将删除数字字符!@tech_geek您可以执行
str.replace(/[^a-zA-Z0-9]/g,”)
实际上你需要这个
str.replace(/[^a-zA-Z0-9]/g,”)
注意,0-9和]之间有一个空格,需要进行一些调整,它没有删除/或-字符,camelCase的第一个字符应该是小写的,但这一个是大写的。您忘记了在第一个函数中声明
reg
。太完美了!从字符串中删除所有特殊的unicode字符。这会留下“an”d#在剥离的字符串中。示例输出:“abc的测试”请添加u did数字不是特殊字符的解释,它们将被删除
var result= stringToReplace.replace(/[^\w\s]/g, '')
const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);