为了账号安全,请及时绑定邮箱和手机立即绑定

^在$p = '/^我[^\s]+(苹果|香蕉)$/';里有,为什么在$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';里就没有,是断言目标的开始位置的那个,这不是必须的?还是有什么条件?

除了标题里提到的问题,还有$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';

下划线的地方有两个问题:\w匹配字母或数字或下划线,那后面的\.\-呢,\-这里是范围?;还有后面两处加号是代表1 次或多次匹配?

是的话,我还有第三个问题,我自己的答案是$p = '/[\w\.\-]+[0-9\-]/';这个,成功了的,但看别的同学是

$p = '/\d+-[^\s]+\d/';  这里也有两个+,为什么要多次匹配两次,因为有两个\d?那为什么要有两个\d,第一个+后面还有-,这是多匹配加范围?  

新手望多指教,谢谢

正在回答

2 回答

非常感谢啊

0 回复 有任何疑惑可以回复我~

由于后面的正则我都不太懂2333就去看了精通正则表达式这本书

来自问自答一下

^这个之前我理解错了,我以为是这个表达式开头要用上,其实是 假设你要查找行首的字母单词等等时才需要加上,像是邮箱的那个题目,他最多用上$而不是^

$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/   这个里面\.\-,其实\是转义符号,本来. -都是元字符,加上这个,就可以当做普通的字符。

后面的+号是1次多次匹配,可以当成【1,无穷】,顺便说 *是【0,无穷】,?是【0,1】

正确答案里的/\d+\-\d+/,电话号码是前面的区号加上后面的数字,所以两块数字被-分隔开了,所以有两个\d,\-也是我上面说的那个作用,顺便一提范围的话,【0-9】,这种是范围。

本来压根不明白看下书就懂了,的确课程里内容安排少比较难讲清楚,我只看了二十来页最基本的都明白了,也建议大家不懂就下个看一下。over

6 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

^在$p = '/^我[^\s]+(苹果|香蕉)$/';里有,为什么在$p = '/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';里就没有,是断言目标的开始位置的那个,这不是必须的?还是有什么条件?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信