2017-02-24 86 views
0

是我在AngularJS範圍字段名爲擺脫AngualrJS篩選記錄與

這始終是一個4字母的代碼,如1A22或4D23(數字,字母,數字,數字)

我想過濾掉(即未示出)的任何滿足某些條件的

  • 具有2K
  • 開始用5
  • 開始1C
  • 012開始

現在我知道我可以在我的ng-repeat(服務中的服務)上創建單獨的過濾器,但我認爲前進的方向是一個很好的自定義過濾器,我可以在需要過濾的一系列條件。我懷疑的正則表達式條件的字符串就是答案

/^2k|5|1C*/ 

任何人都可以提出建議解決這個自定義過濾器的最佳方式?由於

編輯:這是我的解決方案,正則表達式從公認的答案和以下過濾器

myApp.filter('regex', function() { 
    return function(input, field, regex) { 
     var patt = new RegExp(regex); 
     var out = []; 
     for (var i = 0; i < input.length; i++){ 
      if(!patt.test(input[i][field])) 
       out.push(input[i]); 
     } 
     return out; 
    }; 
}); 

然後我就在我使用這個NG-重複

regex:'rid':'^(?:2K|5|1C)[A-Z0-9]+$'" 

回答

1

你不是至今。此正則表達式將任意文本開始2K51C匹配:

^(?:2K|5|1C)[A-Z0-9]+$ 

See the demo

如果你想確保長度爲4,您可以使用此一:

^(?=[A-Z0-9]{4}$)(?:2K|5|1C)[A-Z0-9]+$ 

See the demo

+0

SOlid正則表達式,並設法寫過濾器去與它 – MOLEDesign