正则表达式 [-.-_A-Za-z0-9] 如何理解?
展开全部
/^[-.-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/
分成2部分,@之前和之后
@之前
^[-.-_A-Za-z0-9]+ 表示允许出现- . _ 和字母数字这些,且必须大于1个字符,字数无上限,而且他们出现的位置都不限
@之后
([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$
([_A-Za-z0-9]+\.)+ 表示允许大于1个字母数字出现,后面跟 .
[A-Za-z0-9]{2,3} 表示允许2个或3个字母数字的组成的单词出现
下面的验证,根据你的修改了一些
/^[^\_][\w\-\.]+@[\w\.]+[\w]{2,3}$/
@之前
^[^\_][\w\-\.]+ 排除下划线出现在用户名头位置,\w表示所有字母和数字,下划线
后面都差不多意思
------------------------------------
不好意思,没注意到你的补充,现在才看到
1.我的代码里最前面的/^是表示正则表达式的开始的吧?
a: 是的,^是开始符号 $是结束符号
2.按我的代码,第二个横线是不是可以去掉,而且原意不变?(我试过,去掉第一个不可以,去掉第二个代码能正常运行),如果不可以去掉那么要它有什么用?
我试过用/^[-.-_-----A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/这个代码也能用,也就是说从我那里的第三个横线开始加多少个都可以。
3.df.-.g_d._fg@aa.aa.aa.bbbbbbbbb这个字符串可以在你的表达式里通过,这个违背了,我之前的意思:及最后一个单词后面只能是两个或三个字母。
a:俩个短横线保留一个就可以了,不能去掉第一个的原因是第二个短横线-应该被当成连接符了,就想A-Z这样的中间的链接符,你去掉第一个的话,在第二个短横线那里加个反斜杠\就好了
你提出的错误确实是存在,应该是[\w.]+这里出问题了,这[]里面的是可选的,而不是必须的,所以在匹配bbbbbbbbb的时候在[\w.]+这里成功,最后的[\w]{2,3}没起到作用,造成了这个错误,我改了一下,这样在没有到字串末尾时连接点.就成为必须字符
/^[^\_][\w\-\.]+@([\w]+\.)+[\w]{2,3}[^\_]$/
分成2部分,@之前和之后
@之前
^[-.-_A-Za-z0-9]+ 表示允许出现- . _ 和字母数字这些,且必须大于1个字符,字数无上限,而且他们出现的位置都不限
@之后
([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$
([_A-Za-z0-9]+\.)+ 表示允许大于1个字母数字出现,后面跟 .
[A-Za-z0-9]{2,3} 表示允许2个或3个字母数字的组成的单词出现
下面的验证,根据你的修改了一些
/^[^\_][\w\-\.]+@[\w\.]+[\w]{2,3}$/
@之前
^[^\_][\w\-\.]+ 排除下划线出现在用户名头位置,\w表示所有字母和数字,下划线
后面都差不多意思
------------------------------------
不好意思,没注意到你的补充,现在才看到
1.我的代码里最前面的/^是表示正则表达式的开始的吧?
a: 是的,^是开始符号 $是结束符号
2.按我的代码,第二个横线是不是可以去掉,而且原意不变?(我试过,去掉第一个不可以,去掉第二个代码能正常运行),如果不可以去掉那么要它有什么用?
我试过用/^[-.-_-----A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/这个代码也能用,也就是说从我那里的第三个横线开始加多少个都可以。
3.df.-.g_d._fg@aa.aa.aa.bbbbbbbbb这个字符串可以在你的表达式里通过,这个违背了,我之前的意思:及最后一个单词后面只能是两个或三个字母。
a:俩个短横线保留一个就可以了,不能去掉第一个的原因是第二个短横线-应该被当成连接符了,就想A-Z这样的中间的链接符,你去掉第一个的话,在第二个短横线那里加个反斜杠\就好了
你提出的错误确实是存在,应该是[\w.]+这里出问题了,这[]里面的是可选的,而不是必须的,所以在匹配bbbbbbbbb的时候在[\w.]+这里成功,最后的[\w]{2,3}没起到作用,造成了这个错误,我改了一下,这样在没有到字串末尾时连接点.就成为必须字符
/^[^\_][\w\-\.]+@([\w]+\.)+[\w]{2,3}[^\_]$/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询