使用JavaScript从string中除去空格以外的所有特殊字符
我想使用JavaScript从string中删除空格以外的所有特殊字符。
例如, abc's test#s
应输出为abcs tests
。
你应该使用stringreplace函数,只有一个正则expression式。 假设特殊字符,你的意思是任何不是字母,这是一个解决scheme:
var str = "abc's test#s"; alert(str.replace(/[^a-zA-Z ]/g, ""));
你可以指定你要删除的字符:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
或者,要更改除数字和字母以外的所有字符,请尝试:
string = string.replace(/[^a-zA-Z0-9]/g, '');
第一个解决scheme不适用于任何UTF-8 alphabenben。 (它会剪切文本,如Привіт)。 我设法创build了不使用RegExp的function,并在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; }
我尝试了Seagul非常有创意的解决scheme,但是发现它将数字视为特殊字符,这不符合我的需要。 所以这里是我对Seagul解决scheme的(安全)调整…
//return true if char is a number 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() === '')) { result += text[i]; } } return result; } return ''; }
我不知道JavaScript,但不可能使用正则expression式?
像[^\w\d\s]
东西只能匹配数字,字符和空格。 这只是一个在JavaScript中查找语法的问题。
要从string中移除哪些特殊字符,准备它们的列表,然后使用javascriptreplace函数来移除所有特殊字符。
var str = 'abc'de#;:sfjkewr47239847duifyh'; alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
或者你可以对整个string运行循环,并将单个单个字符与ASCII码进行比较,并重新生成一个新的string。