2

所以我试图在 javascript 中验证我的文本字段,以便它只有一个连字符。

我设法做到了,所以它们不能并排,但这是低效的,因为用户仍然可以在其他地方输入连字符。

我试图做的是:

if (surname.indexOf("-") > 1)

{

 err += "You cannot use more than one hyphen (-) for Client Surname";

}

但这没有用。我也试过 >=2 还是不行。

你会建议研究或尝试什么?

谢谢。

4

5 回答 5

4
if ((surname.length - surname.replace('-', '').length) >= 2) {
     err += "You cannot use more than one hyphen (-) for Client Surname";
}

基本上,取原始字符串的长度并将其与删除所有连字符的字符串长度进行比较。如果差值为 2 或更多,则表示超过 1 个连字符。

于 2012-04-07T18:11:01.630 回答
2

您可以使用 .match() + 正则表达式来执行此操作。

if(surname.match(/\-/g).length>1) err+='Too many hyphens!';
于 2012-04-07T18:14:34.247 回答
2

不……这是我朋友的一个简单解决方案:

var str="My-Name-Is-Jhon";
var count = str.match(/-/g);  
alert(count.length);

它会提醒你 3。

于 2012-04-07T18:14:37.537 回答
2
function tooManyHyphens(str){
  return str.split("-").length < 3;
}

var test1 = "Something-Something";
var test2 = "some-thing-some";
var test3 = "some";

console.log(tooManyHyphens(test1));
console.log(tooManyHyphens(test2));
console.log(tooManyHyphens(test3));

http://jsfiddle.net/p9rHe/1/

于 2012-04-07T18:16:27.597 回答
1
var hyphens = 0;

for(var i = 0; i<surname.length; i++) {
    if(surname.charAt(i) == "-") hyphens++;
    if(hyphens > 1) {
        err += "You cannot use more than one hyphen (-) for Client Surname";
        break;
    }
}
于 2012-04-07T18:10:42.640 回答