jQuery从string等中删除特殊字符
我有这样的string:
var str = "I'm a very^ we!rd* Str!ng.";
我想要做的是从上面的string中删除所有特殊字符,并replace空格,以防input下划线和 – 字符。
上面的string在“转换”之后看起来像这样:
var str = 'im-a-very-werd-strng';
replace(/[^a-z0-9\s]/gi, '')
会将string过滤为字母数字值,并replace(/[_\s]/g, '-')
将replace下划线和空格连字符:
str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-')
正则expression式的来源:正则expression式的JavaScript只允许字母数字
这里是一个演示: http : //jsfiddle.net/vNfrk/
假设“特殊”是指非单词字符,那么这很容易。
str = str.replace(/[_\W]+/g, "-")
str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')
既然我不能评论贾斯珀的答案,我想指出他的解决scheme中的一个小错误:
str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');
问题是,第一个代码删除所有的连字符,然后试图取代他们:)你应该反转replace调用,并添加连字符第二个replace正则expression式。 喜欢这个:
str.replace(/[_\s]/g, '-').replace(/[^a-z0-9-\s]/gi, '');