在javascript中验证连字符只有一个

时间:2012-04-07 18:08:16

标签: javascript

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

我设法让它们不能并排,但这样效率很低,因为用户仍然可以在其中输入连字符。

我试图做的是:

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

{

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

}

但那没用。我也试过> = 2仍然不好。

你会建议调查或尝试什么?

感谢。

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

if(surname.match(/\-/g).length>1) err+='Too many hyphens!';

答案 2 :(得分:2)

Nah ....这是一个简单的解决方案,我的朋友:

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

它会提醒你3。

答案 3 :(得分: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/

答案 4 :(得分: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;
    }
}