想问一下这个正则为什么无法匹配下面这字符串?

var str = 'https://23.segment.com/?usename=David';
var pattern = /^(http|https|ftp|mailto):\/\/[0-9a-z\.]+([\/0-9a-z]|[-\_\?=])*([\.a-z]*)$/
console.log(pattern.exec(str));//null

为什么上面这段正则匹配不出来,求大神指点

阅读 1.4k
2 个回答

推荐一个在线测试正则的网站
记得选择JavaScript
可以先删除后面的。一段段来分析。

一看字符串明显有个David。而正则里没有匹配大写字母的,当然匹配不出来。
简单改变下,即可匹配。

^(http|https|ftp|mailto):\/\/[0-9a-z\.]+([\/0-9a-z]|[-\_\?=])*([\.a-zA-Z]*)$
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题