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

Posted

技术标签:

【中文标题】jQuery从字符串中删除特殊字符等等【英文标题】:jQuery remove special characters from string and more 【发布时间】:2012-02-17 06:34:25 【问题描述】:

我有一个这样的字符串:

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

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

上面的字符串在“转换”之后看起来像这样:

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

【问题讨论】:

首先,你可能会为字符串使用双引号,因为里面有一个单引号。 你是对的,但这只是一个例子。很抱歉。 为什么这被标记为 jQuery?文本处理与jQuery无关。 因为我是在 jQuery 中尝试的。 【参考方案1】:

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/

【讨论】:

来自Daniel Przybylowski的评论:看来下划线被第一个正则表达式删除了。所以第二个可能是这样的: replace(/\s1,/g, '-') 量词的原因是用'-'替换一个或多个空格。为什么 ?想象一下像“something & something”这样的字符串。 非常感谢! @HereToLearn_ developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/… replace(/[_\s+]/g, '-') 用一个破折号替换多个空格可以派上用场 谢谢,@Jasper 它运行良好。但是如果字符串中有多个 - (破折号),那么如何删除第二个破折号。【参考方案2】:

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

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

【讨论】:

我想删除非单词字符(或将它们替换为“无”)。我想保留数字和普通字母,并想用横条纹替换空格和下划线。 这是最有力的答案。简单而强大..! 值得指出的是,与上述所有答案不同,这个答案实际上处理的是“foo & bar”,例如“foo-bar”,而不是“foo--bar”。简短,简单,完美! 它是否适用于非 utf 8 的单词字符?喜欢ç ş ğ ü ö【参考方案3】:
str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-')

【讨论】:

【参考方案4】:

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

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

Demo

【讨论】:

【参考方案5】:

这将删除所有特殊字符

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

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

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

【讨论】:

【参考方案6】:

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

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

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

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

【讨论】:

【参考方案7】:

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

如果

str = My name is "Ghanshyam" and from "java" background

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

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

结果:

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

其中 g 表示全局

【讨论】:

【参考方案8】:
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());

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

【讨论】:

虽然此代码可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的回答添加解释并说明适用的限制和假设。

以上是关于jQuery从字符串中删除特殊字符等等的主要内容,如果未能解决你的问题,请参考以下文章

从R中的字符串中删除所有特殊字符?

从JS中的字符串中删除所有特殊字符

jquery 选择器包含特殊字符

如何使用php从字符串中删除特殊字符,例如:&)(\ /?

从字符串中删除特殊字符的最有效方法

如何从字符串中删除特殊字符?