我想使用 JavaScript 从字符串中删除除空格以外的所有特殊字符。
例如,
abc's test#s
应该输出为
abcs tests
.
我想使用 JavaScript 从字符串中删除除空格以外的所有特殊字符。
例如,
abc's test#s
应该输出为
abcs tests
.
您应该使用带有单个正则表达式的字符串替换函数。假设通过特殊字符,您的意思是任何不是字母的东西,这是一个解决方案:
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
您可以指定要删除的字符:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
或者,要更改除数字和字母以外的所有字符,请尝试:
string = string.replace(/[^a-zA-Z0-9]/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;
}
更新:请注意,此解决方案仅适用于有小写和大写字母的语言。在像中文这样的语言中,这是行不通的。
更新 2:当我进行模糊搜索时,我来到了原始解决方案。如果您还尝试删除特殊字符以实现搜索功能,则有更好的方法。使用任何可以仅从拉丁字符生成字符串的音译库,然后简单的 Regexp 将完成删除特殊字符的所有魔术。(这也适用于中国人,你也可以通过制作Tromsø
==获得额外的好处Tromso
)。
我不懂 JavaScript,但不能使用正则表达式吗?
类似的东西[^\w\d\s]
将匹配除数字、字符和空格之外的任何内容。在 JavaScript 中找到语法只是一个问题。
搜索所有不(单词字符 || 空格):
str.replace(/[^\w ]/, '')