给定一个这样的字符串:

"The dog      has a long   tail, and it     is RED!"

什么样的jQuery或JavaScript魔法可以用来保持空间只有一个最大空间?

目标:

"The dog has a long tail, and it is RED!"

当前回答

我们可以在sed system命令的帮助下使用下面的正则表达式。类似的正则表达式可用于其他语言和平台。

将文本添加到某个文件中,例如test

manjeet-laptop:Desktop manjeet$ cat test
"The dog      has a long   tail, and it     is RED!"

我们可以使用下面的正则表达式将所有空格替换为单个空格

manjeet-laptop:Desktop manjeet$ sed 's/ \{1,\}/ /g' test
"The dog has a long tail, and it is RED!"

希望这能起到作用

其他回答

var str = "The      dog        has a long tail,      and it is RED!";
str = str.replace(/ {2,}/g,' ');

编辑: 如果你想替换所有类型的空白字符,最有效的方法是这样的:

str = str.replace(/\s{2,}/g,' ');

我有一个方法,我叫它Derp方法因为没有更好的名字。

while (str.indexOf("  ") !== -1) {
    str = str.replace(/  /g, " ");
}

在JSPerf中运行它会得到一些令人惊讶的结果,它击败了一些更复杂的方法EDIT原始JSPerf链接http://jsperf.com/removing-multiple-spaces/3当时似乎已经死了

假设你还想覆盖制表符、换行符等,只需将\s\s+替换为' ':

string = string.replace(/\s\s+/g, ' ');

如果你真的只想覆盖空格(而不是制表符,换行符等),可以这样做:

string = string.replace(/  +/g, ' ');

这是一种解决方案,尽管它将针对所有空格字符:

"The      dog        has a long tail,      and it is RED!".replace(/\s\s+/g, ' ')

"The dog has a long tail, and it is RED!"

编辑:这可能更好,因为它的目标是一个空格后面跟着一个或多个空格:

"The      dog        has a long tail,      and it is RED!".replace(/  +/g, ' ')

"The dog has a long tail, and it is RED!"

替代方法:

"The      dog        has a long tail,      and it is RED!".replace(/ {2,}/g, ' ')
"The dog has a long tail, and it is RED!"

我没有单独使用/\s+/,因为它可以多次替换跨越1个字符的空格,而且可能效率较低,因为它的目标超过了必要的范围。

我没有深入测试任何这些,所以如果有bug,我就不知道了。

另外,如果你要做字符串替换,记得重新分配变量/属性到它自己的替换,例如:

var string = 'foo'
string = string.replace('foo', '')

使用jQuery.prototype.text:

var el = $('span:eq(0)');
el.text( el.text().replace(/\d+/, '') )

全面的未加密的回答新手等。

这是写给所有像我这样的傻瓜,他们测试了你们中一些人写的不工作的脚本。

以下3个例子是我在以下3个网站上删除特殊字符和额外空格的步骤(所有这些都工作得很好){1。EtaVisa.com 2。EtaStatus.com 3。Tikun.com},所以我知道这些工作完美。

我们已经将这些连接在一起,一次超过50个,没有问题。

//删除特殊字符+ 0-9,只允许字母(大写和小写)

function NoDoublesPls1()
{
var str=document.getElementById("NoDoubles1");
var regex=/[^a-z]/gi;
str.value=str.value.replace(regex ,"");
}

//删除特殊字符,只允许字母(大写和小写)和0-9个and空格

function NoDoublesPls2()
{
var str=document.getElementById("NoDoubles2");
var regex=/[^a-z 0-9]/gi;
str.value=str.value.replace(regex ,"");
}

//删除特殊字符,只允许字母(大写和小写)和0-9个and空格 //结尾的.replace(/\s\s+/g, " ")去掉了多余的空格 //当我使用单引号时,它不起作用。

function NoDoublesPls3()
{    var str=document.getElementById("NoDoubles3");
var regex=/[^a-z 0-9]/gi;
str.value=str.value.replace(regex ,"") .replace(/\s\s+/g, " ");
}

:::: 将#3保存为.js //我将我的命名为NoDoubles.js

:::: 将JS包含在页面中

 <script language="JavaScript" src="js/NoDoubles.js"></script>

包括在你的表单字段::such as

<INPUT type="text" name="Name"
     onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>

它看起来是这样的

<INPUT type="text" name="Name" onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>

这将删除特殊字符,允许单个空格和删除额外的空格。