【发布时间】:2014-08-12 00:56:08
【问题描述】:
什么是正则表达式,这样第一个字符总是一个字母,其余的可以是字母或数字,或者什么都不是?
我有这个,当你输入至少两个字符时它可以工作,但是当你只输入一个字母而不输入其他字符时它就不起作用了。
/^[A-z][A-z0-9]+$/
我需要修改什么才能只允许一个字母? 谢谢
【问题讨论】:
标签: regex
什么是正则表达式,这样第一个字符总是一个字母,其余的可以是字母或数字,或者什么都不是?
我有这个,当你输入至少两个字符时它可以工作,但是当你只输入一个字母而不输入其他字符时它就不起作用了。
/^[A-z][A-z0-9]+$/
我需要修改什么才能只允许一个字母? 谢谢
【问题讨论】:
标签: regex
您的正则表达式不正确:
/^[A-z][A-z0-9]+$/
你需要使用:
/^[A-Za-z][A-Za-z0-9]*$/
[A-z] 的范围由非字母字符组成,还包括 [、]、^ 等(基本上是 91-96 ASCII 码之间的任何字符)。
最好将量词 + 更改为 *,因为您的输入只能包含单个字符。
【讨论】:
您的正则表达式需要两个字符(顺便说一句,与字母不同),因为您正在寻找一个是字母的字符,以及至少一个 (+) 字母或数字。
为了更好地获取以字母开头的字符串,然后是您需要的任何其他字符:
^[A-Za-z].*$
^ 表示行首
[A-Za-z] 只获取字母,大写或小写
.* 可以得到任何字符,0 次或更多次
$ 表示字符串的结尾
【讨论】:
将+ 修饰符替换为*(将含义从“1 或更多”更改为“0 或更多”)。
【讨论】:
将您的正则表达式更改为:
/^[A-Za-z][A-Za-z0-9]*$/
---------------------^
确保将+ 更改为*,使其匹配0 或更多。
【讨论】:
可以这样实现
# ^(?i)[a-z][a-z0-9]*$
^ # BOS
(?i) # Ignore case
[a-z] # a-z case insensitive
[a-z0-9]* # Same as [^\W_]
$ # EOS
【讨论】: