2011-04-06 92 views
0

我想創建一個簡單的匹配器匹配任何由字母數字字符組成的字符串。我試過以下內容:Sencha Touch匹配器如何工作?

Ext.regModel('RegistrationData', { 
     fields: [ 
      {name: 'nickname',type: 'string'}, 
     ], 

     validations: [ 
      {type: 'format', name: 'nickname', matcher: /[a-zA-Z0-9]*/} 
     ] 
    }); 

但是,這並不像預期的那樣工作。我沒有找到任何有關匹配器中正則表達式應該如何的文檔。

謝謝你的幫助。

+0

你在期待什麼?發生了什麼?請提供一個示例,以便我們檢查可能出現的問題。 – 2011-04-06 10:55:55

+0

我期望我的匹配器將匹配僅包含字母數字字符的所有暱稱。這是綽號Joe,Joe24,jOe28應該匹配。暱稱如喬#2,J/o/e,* 89Joe不應該匹配。 – Palo 2011-04-06 11:43:15

回答

1

我發現sencha.com,他們解釋驗證了博客。

我不知道sencha-touch是什麼,但也許它有幫助,當你告訴我們你給你的正則表達式,你期望它做什麼,它實際上做了什麼(不按預期工作有點模糊)。根據博客它接受「正則表達式格式」,所以爲了您的簡單檢查,它應該是非常標準的。

編輯:

由於胡亂猜測,也許你想用錨,以確保該名稱真的只有字母和數字:

/^[a-zA-Z0-9]*$/ 

^是匹配的字符串的開始

$匹配字符串的末尾

+0

這工作,謝謝:) – Palo 2011-04-06 11:47:54

+0

@Palo歡迎您,還有一點可能是你想用一個'+',否則它會接受一個空字符串替換'*','因爲*'意味着0以上。 – stema 2011-04-06 11:53:16

+0

我實際上希望它匹配一個空字符串。我用另一個已經分配了特定客戶端消息的驗證程序處理空字符串。所以我會kepp *;) – Palo 2011-04-06 12:44:49

1

您當前使用的正則表達式/[a-zA-Z0-9]*/會匹配包含零個或多個小寫或大寫字符(A-Z)或字符串中任意位置的數字的字符串。這就是爲什麼Joe#2,J/o/e,*89Joe以及Joe,Joe24 and jOe28匹配 - 它們都包含零個或多個隨後出現的各個字符。

如果你希望你的字符串只包含你必須根據stema's answer改變正則表達式的各個字符:

/^[a-zA-Z0-9]*$/ 

但是,這還是一個問題。由於其MEAS 零個或多個的*它也匹配空字符串,那麼正確的字符串應該是:

/^[a-zA-Z0-9]+$/ 

+意思一次或多次出現。這將允許僅含有一個大寫或小寫字符或數字,如aF6暱稱。

+0

謝謝,我真的希望這匹配甚至一個空字符串;) – Palo 2011-04-06 12:42:15