我正在尝试创建一个匹配任何由字母数字字符组成的字符串的简单匹配器。我尝试了以下方法:
Ext.regModel('RegistrationData', {
fields: [
{name: 'nickname',type: 'string'},
],
validations: [
{type: 'format', name: 'nickname', matcher: /[a-zA-Z0-9]*/}
]
});
然而,这不能按预期工作。我没有找到任何关于匹配器中的正则表达式应该是什么样的文档。
感谢您的帮助。
答案 0 :(得分:1)
我在sencha.com找到了一个博客,他们在那里解释了验证。
我不知道什么是sencha-touch,但也许有帮助,当你告诉我们你给你的正则表达式做什么,你期望它做什么,以及它实际做了什么(不能按预期工作是一个有点模糊)。根据博客,它接受“正则表达式格式”,所以对于你的简单检查,它应该是非常标准的。
修改强>
作为一个疯狂的猜测,也许你想使用锚来确保名称真的只有字母和数字:
/^[a-zA-Z0-9]*$/
^
匹配字符串的开头
$
匹配字符串
答案 1 :(得分:1)
您当前的正则表达式/[a-zA-Z0-9]*/
将匹配包含零个或多个小写字母(A-Z)或字符串中任何位置的数字的字符串。这就是Joe#2
,J/o/e
,*89Joe
以及Joe
,Joe24 and
jOe28`匹配的原因 - 它们都包含零个或多个相应字符的后续匹配项
如果您希望字符串仅包含相应的字符,则必须根据stema's answer更改正则表达式:
/^[a-zA-Z0-9]*$/
但这还有一个问题。由于*
测量零次或多次出现,它也匹配一个空字符串,因此正确的字符串应为:
/^[a-zA-Z0-9]+$/
+
表示一次或多次出现。这将允许昵称仅包含一个小写或大写字符或数字,例如a
,F
或6
。