2011-04-06 70 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