0

正则表达式的条件是

  1. 只有字母
  2. 只有在输入 2 个字符后才允许空格
  3. 只允许一个空格不超过一个,请帮助我我是 jQuery 新手

现在我正在使用这个,但它不起作用:

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

2 回答 2

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 回答
1

这是一个正则表达式,它将获取仍然符合您要求的最小子字符串。

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

您可以通过将返回的子字符串与原始字符串进行比较来验证用户名的输入。我将在这里创建一个 jsFiddle:http: //jsfiddle.net/cjC5k/

于 2013-02-02T07:54:11.070 回答