0

我正在尝试创建一个简单的匹配器来匹配任何由字母数字字符组成的字符串。我尝试了以下方法:

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

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

然而,这并没有按预期工作。我没有找到任何关于匹配器中的正则表达式应该是什么样子的文档。

谢谢你的帮助。

4

2 回答 2

1

您当前的正则表达式/[a-zA-Z0-9]*/将匹配包含零次或多次出现的小写或大写字符 (AZ) 或字符串中任意位置的数字的字符串。这就是为什么Joe#2, J/o/e,*89Joe以及Joe, Joe24 andjOe28` 匹配 - 它们都包含零个或多个后续出现的相应字符。

如果您希望您的字符串仅包含相应的字符,则必须根据stema 的回答更改正则表达式:

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

但这仍然存在一个问题。由于*which meas零次或多次出现,它也匹配一个空字符串,所以正确的字符串应该是:

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

一次或多次出现+的意思。这将允许昵称只包含一个小写或大写字符或数字,例如,或。aF6

于 2011-04-06T11:53:47.250 回答
1

我在sencha.com上找到了一个博客,他们在其中解释了验证。

我不知道 sencha-touch 是什么,但也许它会有所帮助,当您告诉我们您正在为您的正则表达式提供什么、您期望它做什么以及它实际做什么时(不按预期工作有点模糊) . 根据博客它接受“正则表达式格式”,所以为了您的简单检查,它应该是非常标准的。

编辑:

作为一个疯狂的猜测,也许您想使用锚来确保名称实际上只有字母和数字:

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

^匹配字符串的开头

$匹配字符串的结尾

于 2011-04-06T10:39:32.430 回答