jQuery从字符串中删除特殊字符等

时间:2012-01-23 22:35:40

标签: javascript jquery regex replace

我有一个这样的字符串:

var str = "I'm a very^ we!rd* Str!ng.";

我想要做的是从上面的字符串中删除所有特殊字符并替换空格,以防它们被键入,下划线,带有 - 字符。

上述字符串在“转换”之后会如下所示:

var str = 'im-a-very-werd-strng';

8 个答案:

答案 0 :(得分:109)

replace(/[^a-z0-9\s]/gi, '')会将字符串过滤为字母数字值,replace(/[_\s]/g, '-')会用连字符替换下划线和空格:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-')

正则表达式的来源:RegEx for Javascript to allow only alphanumeric

以下是演示:http://jsfiddle.net/vNfrk/

答案 1 :(得分:24)

假设“特殊”是指非单词字符,那么这很容易。

str = str.replace(/[_\W]+/g, "-")

答案 2 :(得分:13)

str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')

答案 3 :(得分:2)

从字符串句子中删除数字,下划线,空格和特殊字符。

str.replace(/[0-9`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,'');

Demo

答案 4 :(得分:1)

由于我无法对Jasper的答案发表评论,我想在他的解决方案中指出一个小错误:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');

问题是第一个代码删除了所有连字符,然后尝试替换它们:) 您应该反转替换调用,并添加连字符以替换正则表达式。像这样:

str.replace(/[_\s]/g, '-').replace(/[^a-z0-9-\s]/gi, '');

答案 5 :(得分:1)

删除/替换Jquery中的所有特殊字符:

如果 str =我的名字是“Ghanshyam”,而且来自“java”背景

并想删除所有特殊字符(“)然后使用它

str = str.replace(/“/ g,'')

结果:我的名字是Ghanshyam,来自java背景

其中g表示Global @Thanks

答案 6 :(得分:1)

这将删除所有特殊字符

 str.replace(/[_\W]+/g, "");

这真的很有帮助,可以解决我的问题。请运行以下代码并确保其有效

var str="hello world !#to&you%*()";
console.log(str.replace(/[_\W]+/g, ""));

答案 7 :(得分:0)

var str = "I'm a very^ we!rd* Str!ng.";
$('body').html(str.replace(/[^a-z0-9\s]/gi, " ").replace(/^\s+|\s+$|\s+(?=\s)/g, "").replace(/[_\s]/g, "-").toLowerCase());

第一个正则表达式删除带有空格的特殊字符,而不是从字符串中删除多余的空格,最后一个正则表达式用“-”替换空格