2013-02-02 56 views
0

條件的正則表達式是正則表達式來命名

  1. 只有信
  2. 空間允許2性格特徵輸入
  3. 只有一個空間,允許不超過一個只有後,請幫助我,我很新的jQuery

現在我用這一個,但它不工作:

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

「charecter」你的意思是「字母」? _你輸入的所有東西都是一個字符。你是否試圖說只允許大小寫字母和空格,但只有在字符串開頭至少有兩個字母時才允許使用空格? (不管你有什麼要求,請注意,'keyup'處理程序本身是不夠的,因爲用戶可以使用鼠標或編輯菜單拖放或剪切/粘貼/刪除。) – nnnnnn

+1

ya對不起,對不起 – Anudeep

+2

注而且改變用戶輸入的字段的內容也會使他們惱火,特別是如果他們試圖在字段的開頭編輯並且代碼不停地移動光標。我建議在離開該字段時測試格式,並顯示錯誤消息或刪除該點的無效字符。 – nnnnnn

回答

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/

+0

thanx for @mpaulse – Anudeep

1

這裏是正則表達式,將抓住仍然符合您的要求的最小子字符串。

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

您可以通過比較其返回的子與原來的字符串驗證用戶名的輸入。我將創建一個這樣做的jsFiddle:http://jsfiddle.net/cjC5k/