我是RegEx中的菜鸟,我正在尝试编写一个RegEx模式,其中最少6个,最多9个字符,其中前3个字符是字母(不区分大小写,仅限alpha),其余为位数。
我有以下模式:^\w{3}\d{3,6}$
但出于某种原因,当我输入以下内容时,该模式会返回true:aa12345
或Ap4587
,依此类推。我需要前3个字符只是字母(确切)。
我希望有人能够帮助我。
感谢!!!
答案 0 :(得分:5)
\w
相当于[a-zA-Z0-9_]
。您应该将正则表达式更改为:
^[a-zA-Z]{3}\d{3,6}$
答案 1 :(得分:2)
仅将[a-zA-Z]
用于字母。我更喜欢使用[0-9]
,即使它与\d
的一致性
/^[a-zA-Z]{3}[0-9]{3,6}$/
\w
匹配a-z, A-Z, 0-9, _
,并且只能用于字母数字字符
答案 2 :(得分:2)
如果您想允许更广泛的unicode值,我建议:
[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}]{3}
这将允许小写,大写,标题,“其他”和修饰符作为前三个字符。
例如,由于特殊字符,[a-zA-Z]{3}
会排除单词“Résumé”。上面的模式允许它。
我建议您查看正则表达式字符类的文档:
<强> Character Classes or Character Sets 强>
MSDN文档也非常好,大部分都与标准的正则表达式库兼容:
答案 3 :(得分:1)
试试这个:
^[a-zA-Z]{3}\d{3,6}$
\w
匹配a-z, A-Z, 0-9