给定一个这样的字符串:

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

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

目标:

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

当前回答

使用nodepad++函数,下面的regex对我来说很好,

发现:{1}\ \ s + K 替换:留空

其他回答

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

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

以下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"/>

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

更健壮的:

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
}
var myregexp = new RegExp(/ {2,}/g);

str = str.replace(myregexp,' ');
var string = "The dog      has a long   tail, and it     is RED!";
var replaced = string.replace(/ +/g, " ");

或者如果你也想替换制表符:

var replaced = string.replace(/\s+/g, " ");
let nameCorrection = function (str) {
  let strPerfect = str.replace(/\s+/g, " ").trim();
  let strSmall = strPerfect.toLowerCase();
  let arrSmall = strSmall.split(" ");
  let arrCapital = [];
  for (let x of arrSmall.values()) {
    arrCapital.push(x[0].toUpperCase() + x.slice(1));
  }

  let result = arrCapital.join(" ");
  console.log(result);
};
nameCorrection("Pradeep kumar dHital");