白篱篱
2015-07-18 18:08
除了标题里提到的问题,还有$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';
下划线的地方有两个问题:\w匹配字母或数字或下划线,那后面的\.\-呢,\-这里是范围?;还有后面两处加号是代表1 次或多次匹配?
是的话,我还有第三个问题,我自己的答案是$p = '/[\w\.\-]+[0-9\-]/';这个,成功了的,但看别的同学是
$p = '/\d+-[^\s]+\d/'; 这里也有两个+,为什么要多次匹配两次,因为有两个\d?那为什么要有两个\d,第一个+后面还有-,这是多匹配加范围?
新手望多指教,谢谢
非常感谢啊
由于后面的正则我都不太懂2333就去看了精通正则表达式这本书
来自问自答一下
^这个之前我理解错了,我以为是这个表达式开头要用上,其实是 假设你要查找行首的字母单词等等时才需要加上,像是邮箱的那个题目,他最多用上$而不是^
$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/ 这个里面\.\-,其实\是转义符号,本来. -都是元字符,加上这个,就可以当做普通的字符。
后面的+号是1次多次匹配,可以当成【1,无穷】,顺便说 *是【0,无穷】,?是【0,1】
正确答案里的/\d+\-\d+/,电话号码是前面的区号加上后面的数字,所以两块数字被-分隔开了,所以有两个\d,\-也是我上面说的那个作用,顺便一提范围的话,【0-9】,这种是范围。
本来压根不明白看下书就懂了,的确课程里内容安排少比较难讲清楚,我只看了二十来页最基本的都明白了,也建议大家不懂就下个看一下。over
PHP进阶篇
181835 学习 · 2577 问题
相似问题