2014-05-13 85 views
1

以下是我的regular expression方法。jQuery驗證未按預期工作

$.validator.addMethod("regex", function (element, value, regexp) { 
     var re = new RegExp(regexp); 
     return this.optional(element) || re.test(value); 
    }, "Special Characters not permitted"); 

以下是我的rules

var rules = { 
    cname: { 
     required: true, 
     minlength: 8 
     //alphanumeric:true 
     //regex: "/^\w+$/i" 
     //uniqueCompnameName: true 
    } 
} 

當我將正則表達式傳遞給正則表達式時,它根本不起作用。

+2

你能創建的jsfiddle或jsbin?到你使用的插件的鏈接也會很好。 – punkbit

+1

你的正則表達式參數是錯誤的......它應該只是''^ \ w + $'' –

回答

1

請記住,\w將與[a-zA-Z0-9_]相同。現在,對於正則表達式,你真正需要的這個位置:

^[A-Za-z0-9]{8,}$ 

Regular expression visualization

這是說有8個字符的最小長度的任何單詞字符。

然後終於,傳遞正則表達式插入功能時,你想傳遞這樣的:

regex: '^[A-Za-z0-9]{8,}$' 

,然後進行構建時,RegExp你想通過標誌作爲第二個參數:

var re = new RegExp(regexp, 'i'); 

Debuggex Demo

+0

我實際上正在尋找一個不允許特殊字符 – theJava

+0

@theJava的正則表達式,請參閱我的編輯。 –

+0

你能告訴我,這裏有什麼不對。正則表達式:「^ [0-9] {10,} $」只允許數字。 – theJava

2

嘗試使用一個正則表達式表示法通過正則表達式,而不是作爲一個字符串

$.validator.addMethod("regexp", function (value, element, regexp) { 
    if (typeof regexp == 'string') { 
     regexp = new RegExp(regexp); 
    } 
    return this.optional(element) || regexp.test(value); 
}, "Special Characters not permitted"); 

然後

 name1: { 
      required: true, 
      regexp: '/^\w+$/' 
     }, 
     name2: { 
      required: true, 
      regexp: /^\w+$/i 
     } 

演示:Fiddle

+0

@感謝Arun的代碼。 – theJava