给定一个这样的字符串:
"The dog has a long tail, and it is RED!"
什么样的jQuery或JavaScript魔法可以用来保持空间只有一个最大空间?
目标:
"The dog has a long tail, and it is RED!"
给定一个这样的字符串:
"The dog has a long tail, and it is RED!"
什么样的jQuery或JavaScript魔法可以用来保持空间只有一个最大空间?
目标:
"The dog has a long tail, and it is RED!"
当前回答
全面的未加密的回答新手等。
这是写给所有像我这样的傻瓜,他们测试了你们中一些人写的不工作的脚本。
以下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"/>
这将删除特殊字符,允许单个空格和删除额外的空格。
其他回答
以下是对我来说很有效的解决方案:
var text = “ Tes ddas dMd WAlkman 3Dsfd ” .toLowerCase() .replace(/\b\s+/g, “ ”) .replace(/\b\w/g, s => s.toUpperCase()) .trimStart() .trimEnd(); 控制台.log(文本); 结果: Tes Ddas Dmd 随身听 3dsfd
使用nodepad++函数,下面的regex对我来说很好,
发现:{1}\ \ s + K 替换:留空
更健壮的:
function trim(word) { word = word.replace(/[^\x21-\x7E]+/g, ' '); // change non-printing chars to spaces return word.replace(/^\s+|\s+$/g, ''); // remove leading/trailing spaces }
既然你似乎对性能很感兴趣,我用firebug分析了一下。以下是我得到的结果:
str.replace( / +/g, ' ' ) -> 380ms
str.replace( /\s\s+/g, ' ' ) -> 390ms
str.replace( / {2,}/g, ' ' ) -> 470ms
str.replace( / +/g, ' ' ) -> 790ms
str.replace( / +(?= )/g, ' ') -> 3250ms
这是在Firefox上,运行100k字符串替换。
如果您认为性能是个问题,我鼓励您使用firebug进行自己的分析测试。众所周知,人类不善于预测程序的瓶颈所在。
(另外,请注意,IE 8的开发者工具栏也有内置的分析器——它可能值得检查在IE中的性能是什么样的。)
一种更健壮的方法:如果存在初始空格和尾随空格,则该方法也会删除它们。例如:
// NOTE the possible initial and trailing spaces
var str = " The dog has a long tail, and it is RED! "
str = str.replace(/^\s+|\s+$|\s+(?=\s)/g, "");
// str -> "The dog has a long tail, and it is RED !"
你的例子没有这些空格,但它们也是一个非常常见的场景,而公认的答案只是把它们精简成单个空格,比如:“the…红色!,这不是您通常需要的。