这个正则表达式是什么意思?^(?=[1-9])(?=.[A-Z]).{10,12}$

请问一下,这个正则表达式是什么意思?^(?=[1-9])(?=.[A-Z]).{10,12}$
最新回答
沉鱼落雁

2024-05-09 00:07:35

我来回答一下,这个正则表达式字面上的意思的验证必须由一个数字加一个大写字母开头的10-12长度的字符串。

^表示开始,()表示子表达式,^(?=[1-9])(?=.[A-Z])表示开始后面必须接一个数字(范围1-9),数字后面必须接一个大写字母(范围【A-Z】),.表示任意字符,{}表示长度限制,$表示结束。

逻辑图见

追问
你能举出一个符合的例子吗?
追答
1Akdjfkjkjfk ,可以直接在我给的网址中测试,看断点,简单明了
冰月灵狐

2024-05-09 21:47:44

/^[-.-_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}[^\_]$/