一个用来匹配 URL 的正则表达式

mastering regular expressions

很早就买了 Mastering Regular Expressions 这本书,可惜却从没认认真真看完过一遍,虽然平时会经常遇到、用到一些正则表达式,但是都是比较简单的表达式,容易理解,所以这本书就一直都躺在书架上当作工具书在用,没有动力读下去:),那些奇怪的符号确实很难记,看了几天不用就忘了。这里有个简单的正则表达式用来匹配基本的 URL:

^https?://[\d\-a-zA-Z]+(\.[\d\-a-zA-Z]+)*/?$

一点解释:

“a-z”:匹配所有小写字母字符
“A-Z”:匹配所有大写字母字符
“\d”:匹配1个十进制数字
“\D”:匹配1个非十进制数字

“?”:重复出现0次或者1次
“*”:重复出现0次或者多次
“+”:重复出现1次或者多次
“X{n}”:重复出现n次

“^”:从一行的开始匹配
“$”:从一行的结束开始匹配

匹配 Email 地址,匹配日期,匹配信用卡卡号,更多的正则表达式例子看这里:Regular-Expressions.info

评论 (4 Comments)

  1. 怎么连这个也匹配不了http://monpub.com/deposer.html

  2. 我这样写,匹配不了阿
    $ttt=”voici le site

    http://monpub.com/deposer.html
    http://monpub.com/deposer.html
    http://monpub.com/d-epos/e-r.htd-/m/l/dff
    “;

    $reg_exUrl = “#^https?://[\d\-a-zA-Z]+(\.[\d\-a-zA-Z]+)*/?$#”;

  3. 版主你的这篇文章有问题,
    但是你网站中url匹配的很好 可以拿出来分享一下吗?感谢

  4. 东走西顾

发表评论