-1

我是 RegEx 的菜鸟,我正在尝试编写一个 RegEx 模式,它的总字符数最少为 6 个,最多为 9 个,其中前 3 个字符是字母(不区分大小写,仅 alpha),其余的是数字。

我有以下模式:^\w{3}\d{3,6}$

但由于某种原因,当我输入以下内容时,该模式返回真:aa12345Ap4587等等。我需要前 3 个字符只是字母(精确)。

我希望有人能在这方面帮助我。

谢谢!!!

4

4 回答 4

5

\w相当于[a-zA-Z0-9_]。您应该将正则表达式更改为:

^[a-zA-Z]{3}\d{3,6}$
于 2013-09-27T18:28:31.500 回答
2

仅用于[a-zA-Z]字母。我更喜欢使用[0-9]它,即使它与\d一致性相同

/^[a-zA-Z]{3}[0-9]{3,6}$/

\w匹配a-z, A-Z, 0-9, _并且只能用于字母数字字符

于 2013-09-27T18:29:00.790 回答
2

如果您想允许更广泛的 unicode 值,我建议:

[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}]{3}

这将允许小写、大写、标题、“其他”和修饰符作为您的前三个字符。

例如,[a-zA-Z]{3}由于特殊字符,会排除单词“Résumé”。上面的模式将允许它。

我建议您查看正则表达式字符类的文档:

字符类或字符集

MSDN 文档也非常好,其中大部分与标准正则表达式库兼容:

正则表达式中的字符类

于 2013-09-27T18:35:29.237 回答
1

尝试这个:

^[a-zA-Z]{3}\d{3,6}$

作为\w比赛a-z, A-Z, 0-9

于 2013-09-27T18:29:18.670 回答