0

正規表現の条件は

  1. 手紙のみ
  2. スペースは 2 文字が入力された後にのみ許可されます
  3. スペースは 1 つだけ許可されます。複数のスペースは使用できません。助けてください。

今、私はこれを使用していますが、動作しません:

$('.name').keyup(function() {  
    this.value = this.value.replace(/[^A-Za-z]/g,'');    
});
4

2 に答える 2

1

これは、要件に一致する最小のサブストリングを取得する正規表現です。

var reg = /[A-Za-z]{2}[A-Za-z]*[ ]?[A-Za-z]*/;

返されたサブ文字列を元の文字列と比較することで、ユーザー名の入力を検証できます。ここでそうするjsFiddleを作成します:http://jsfiddle.net/cjC5k/

于 2013-02-02T07:54:11.070 に答える
1

必要な結果を得るには、複数の正規表現を使用する必要があると思います。また、ユーザーが自動置換を煩わしく感じるという @nnnnnn に同意します。

最適化できると思いますが、機能するソリューションを次に示します。

$( function() { 
    $('#test').keyup(function(){
        //Remove all characters except letters and whitespace
        this.value = this.value.replace(/[^A-Za-z\s]/g,'');
        //Replace all instance of One or more whitespaces with a space
        this.value = this.value.replace(/\s+/g,' ');
        //Replace a space that happens after zero or one characters
        this.value = this.value.replace(/^([a-zA-Z]{0,1})(\s)([a-zA-Z]+)/,'$1$3');
        //Replaces any spaces that occur after the first space
        this.value = this.value.replace(/^([a-zA-Z]{2,})(\s+)([a-zA-Z]+)(\s+)/,'$1$2$3');
    });
});

これが機能することを示すjsfiddleです。http://jsfiddle.net/mattpaulsen/sSUhn/3/

于 2013-02-02T07:38:47.880 に答える