2

そのため、ハイフンが1つだけになるように、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 に答える