正则表达式学习

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。

许多程序设计语言都支持利用正则表达式进行字符串操作。

1.正则语法

1) 正则在线验证网址

https://tool.oschina.net/regex

2.正则示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
查找字符串中的<img src="" alt="">
preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i', stripcslashes($test_str), $match);

手机号正则
$preg_match='/^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/';
验证座机号  010-62279965  0377-62258080   020-
var r_tel=/^0\d+-\d+$/
国内座机:
/^\d{3}-\d{8}|\d{4}-\d{7}$/
验证手机号:11位  
var r_tel=/^1[3,5,8]\d{9}$/
手机:
/^((13[0-9]{1})|159|153)+\d{8}$/ 
/^(13+\d{9})|(159+\d{8})|(153+\d{8})$/ 

姓名
$preg_match="/^[\x80-\xff]{6,26}$/"; //2-8个中文
$preg_match='/^[\x80-\xff]{6,26}$|^([A-Za-z]*\s?[A-Za-z]*)*$/';

匹配汉字
preg_match("/[\x7f-\xff]/", $title);
验证中文
var reg=/^[\u4e00-\u9fa5]{2,17}$/
验证汉字:验证汉字:
/^[\u4e00-\u9fa5]+$/ 

身份证验证
/^((\d{15})|(\d{17}[0-9X]))$/
验证身份证号  18位或者17位加一个X
var r_s=/^\d{18}|\d{17}x$/i
邮箱验证
/^\w+@\w+(\.\w+)+$/;
邮箱 
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; 
所有的通用邮箱地址
var r_eamil=/^\w+@\w+(\.)\w+$/
匹配一个QQ邮箱地址
861745122@qq.com 
var r_qq_email=/^\d{5,}@qq(\.)com$/
匹配一个163的邮箱地址
var r_163_email=/^\w+@163(\.)com$/

验证ip  192.168.1.250
var r_ip=/^\d{3}(\.)\d{1,3}(\.)\d{1,3}(\.)[2-9]{1,3}$/

验证网址  
//www.baidu.com 
//www.taobao.cn   
//www.sina.net  www.baiwei.
var r_web=/^www(\.)\w+(\.)\w+$/i
匹配一个后缀名可能是.com|.net|.cn|.edu
var email=/^\w+@\w+(\.)com|net|cn|edu$/

验证由26个英文字母组成的字符串
/^[A-Za-z]+$/ 
验证由26个大写英文字母组成的字符串:
/^[A-Z]+$/ 
验证由26个小写英文字母组成的字符串:
/^[a-z]+$/ 
验证由数字和26个英文字母组成的字符串:
/^[A-Za-z0-9]+$/ 
验证由数字、26个英文字母或者下划线组成的字符串:
/^\w+$/ 
验证用户名:
/^[a-zA-Z]\w{5,7}$/《数字不能开头,用户包括6到8位》
验证用户密码:
/^[a-zA-Z]\w{5,17}$ /正确格式为:以字母开头,长度在6-18之间,只能   包含字符、数字和下划线。

3.js使用正则

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/****match*****/
var reg=/^[A-Z]{2}\d{12}$/
var isMatch = str.match(reg);//失败返回NULL,成功返回数组
/***test******/
var reg =new RegExp("a");//最简单的正则表达式,将匹配字母a 
var reg=new RegExp("a","i");//第二个参数,g (全文查找),i (忽略大小写) ,m (多行查找)
例如下面的两条语句是等价的  
var reg=new RegExp("\\w+");  
var reg=/\w+;
var isMatch = reg.test(str);//返回 Boolean,查找对应的字符串中是否存在模式。

4.php使用正则

1
2
3
4
5
preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 
preg_match( string pattern, string subject [, array matches ] )
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推