正则表达式的基本使用

虽说正则表达式在我们真正的项目开发过程中,大多数都是直接去查资料,但是对于一些正则表达式的基础知识还是十分有必要了解的。比如读懂一个正则表达式,还有面试的时候很可能会被问到。

1 学习教程

(1)学习网站:http://www.runoob.com/regexp/regexp-tutorial.html
(2)教程什么的看的太烦了,而且还有些东西并不是很实用,下面花10分钟就可以掌握实用的、基础的正则表达式了。当然,这些东西都只是了解,快速入门,实用就行,会写简单的正则表达式,能够看得懂正则表达式就够了。

2 请把下面的符号表达的意思记住

* 表示前一个表达式可以出现0、1、多次
+ 表示前一个表达式可以出现1、多次
? 表示前一个表达式可以出现0、1次
^ 表示是否以指定字符串开头,如果在[]前面使用,表示不接受该字符集合
$ 表示是否以指定字符串结尾
| 表示两者间的选择
. 匹配除换行(\n)外的任意一个字符

{n}表示前一个表达式出现确定的 n 次
{n,}表示前一个表达式至少出现n 次
{n,m}最少出现 n 次且最多出现 m 次
注:以上n和m都是非负整数
注:表达式可以是小括号括起来的式子,也可以是单个字符

3 好了,是不是感觉很简单,下面以实例来讲解

(1)实例一: ^once
分析:^的意思是,以某个指定的字符串开头,所以上面正则表达式的意思是:匹配以once开头的字符串

(2)实例二, ^a{2,4}$
分析:以a开头,最少2个a,最多3个a,以a结尾。所以它能匹配的字符串是aa aaa aaaa

(3)补充: - 表示字符范围。匹配指定范围内的任意字符。例如,’[a-z]’ 可以匹配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符。

(4)补充: \d 表示匹配任意一个数字。

(5)实例三,来个复杂的:

验证如下手机号码:
 移动号码段:139138137136135134150151152157158159182183187188147
 联通号码段:130131132136185186145
 电信号码段:133153180189
    表达式如下:
    ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$
(ps:以上表达式来源:http://www.jb51.net/article/96201.htm)

分析:把子表示式分解出来

  ^(                 #表示以某某开头
     (13[0-9])       #130到139
     |               #或者
     (14[5|7])       #145或147
     |
     (15([0-3]|[5-9]))   #150到153   或者   155到159
     |
     (18[0,5-9])      #180,185到189
   )
   \\d{8}$            #匹配任意8个数字,且以数字结尾

4 正则表达式

这里写图片描述
也可以看以下链接:
http://www.runoob.com/regexp/regexp-metachar.html

发布了96 篇原创文章 · 获赞 258 · 访问量 118万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章