正则问题疑问
来源:3-10 作业题
观鱼观猪
2019-06-15 07:58:58
/^(?=.*[a-zA-Z])(?=.*[0-9])[0-9a-zA-Z]*$/ 这个是判断字符串中同时包含数字和字母。
上次提问时,老师说这个表达式有问题,?=之前一般有东西。但实际上我测试发现,这个正则可以正常工作。
现在想问下,这个正则是否可以正常解读,是如何起作用的。谢谢老师。
1回答
同学,你好。
一个正则表达式,不是可以测试它就是对的,首先你得知道他的意思,我们才能正确的使用,?=是前瞻性匹配,一般用它的话,前面都有别的内容,如果没有的话,匹配不到东西,所以我才告诉你这个正则表达式不太合理,你去看一下这个课《正则表达式》的3-33小节就明白我说的意思了: https://class.imooc.com/lesson/792#mid=19967。
但是这个正则表达式比较复杂,前面的前瞻性匹配不到,后面还有其他匹配的条件,所以你测试的时候会有一些内容会匹配到,因为最后还有一个数字和字幕的匹配。上次我跟你说的是有可能有问题,但是有些东西可能在特殊的情况下会有特殊的意义,也不能确定这个写法就是错的,所以我问你在哪儿看到的这个正则表达式,我需要评估一下,如果只是随便找的一个,没有什么具体的环境语义,那就不要纠结这个了,没有必要。把重心放在对正则符号的练习上, 可以多练习几个具体的正则,比如手机号的验证,邮箱的验证,身份证的验证等。
如果帮助到了你,欢迎采纳!
祝学习愉快!
相似问题