2013-01-13 17 views
1

我正在嘗試在ASP.NET MVC中的RegularExpression數據註釋中爲模型驗證使用此回答中給出的英國郵政編碼正則表達式https://stackoverflow.com/a/164994/4950ASP.NET MVC數據註釋正則表達式在.NET中但不在JS中

這裏的正則表達式:

(GIR 0AA)|((([A-Z-[QVX]][0-9][0-9]?)|(([A-Z-[QVX]][A-Z-[IJZ]][0-9][0-9]?)|(([A-Z-[QVX]][0-9][A-HJKSTUW])|([A-Z-[QVX]][A-Z-[IJZ]][0-9][ABEHMNPRVWXY])))) [0-9][A-Z-[CIKMOV]]{2}) 

能正常工作的服務器端和正則表達式的英雄(http://regexhero.net/tester/)進行測試,但在客戶端上時,正則表達式似乎並沒有工作。

我已經看過了Jquery.validate.unobtrusive插件使用的代碼:

$jQval.addMethod("regex", function (value, element, params) { 
    var match; 
    if (this.optional(element)) { 
     return true; 
    } 

    match = new RegExp(params).exec(value); 
    return (match && (match.index === 0) && (match[0].length === value.length)); 
}); 

和排序在這裏重複了同樣的情況:http://jsfiddle.net/cEGsj/(我後來添加的GI PARAMS)。

誰能告訴我爲什麼這個正則表達式在JS失敗?我認爲最初是用套管做的,但增加忽略情況選項似乎沒有改變任何東西。

也似乎沒有在這裏工作:http://regexpal.com/所以必須有一些語法問題..

更新:我設法得到的東西通過移除嵌套字符集令人滿意的工作。在這裏看到工作示例:http://jsfiddle.net/Asyqh/1/

回答

0

我已經設法通過刪除Javascript似乎並不喜歡的嵌套字符集來獲得滿意的工作。請看這裏的工作示例:http://jsfiddle.net/Asyqh/1/

var regex = "(GIR 0AA)|((([A-Z][0-9][0-9]?)|(([A-Z][A-Z][0-9][0-9]?)|(([A-Z][0-9][A-HJKSTUW])|([A-Z][A-Z][0-9][ABEHMNPRVWXY])))) [0-9][A-Z]{2})"; 
相關問題