正则表达式的简要与实用案例
一、什么是正则表达式
正则表达式(Regular Expression,简称regexp)
- 是一种描述字符串的语法结构
- 是一个特定的格式化模式,用于验证各种字符串是否匹配这个特征,劲儿实现高级的文本查找、替换、截取内容等操作
应用:在项目开发中,手机号指定位数的隐藏、数据采集、敏感词的过滤以及表单中的验证等功能,都可以利用正则来实现。
适用领域:在操作系统(Unix、Linux)、编程语言(C、C++、Java、PHP、Python、JavaScript等)。
正则表达式的表现形式:
- 一种在POSIX规范兼容的正则表达式,用于确保操作系统之间的可移植性。
- 一种是当Perl(一种编程语言)发展起来后,衍生出来了Perl正则表达式,JavaScript中的正则语法就是基于Perl的。
如何使用正则:在开发中,经常需要根据正则匹配模式完成对指定字符串的搜索和匹配。
- RegExp对象提供的exec()方法
- String对象提供的match()方法
二、正则表达式的字符简介
注意:
字符“-”在通常情况下只表示一个普通字符,只有表示字符范围时才作为元字符使用。“-”连字符表示的范围遵循字符编码的顺序,如“a-z”、"z-a"、"a-9"都是不合法的范围。
三、匹配常用案例
1.匹配座机号
var regexp = /^(0\d{2}-\d{8})|(0\d{3}-\d{7})$/;
var demo = /^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/;
2.匹配中文
/^[\u4e00-\u9fa5]{2,4}$/
3.匹配验证表单(注册QQ)
验证QQ号:/^[1-9][0-9]{4,}$/
验证手机号:/^((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$/
验证邮箱:/^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/
验证座机号:/^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/
验证用户名:/^[a-zA-Z0-9_-]{3,16}$/
验证密码:/^[\$a-zA-Z0-9_-]{6,18}$/
4.匹配密码强度
区分大小写英文字母:/^([a-z].*[A-Z])|([A-Z].*[a-z])$/
带有字母和数字: /^([a-z].*[0-9])|([A-Z].*[0-9])|([0-9].*[a-zA-Z])$/
字母数字中间加有下划线(想要什么中括号中加):/^[A-Za-z0-9]+[_$][A-Za-z0-9]*$/
5.匹配双字节字符(包括汉字在内):[^\x00-\xff]
注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
6.匹配空白行:
\n\s*\r
注:可以用来删除空白行
7.匹配HTML标记:
< (\S*?)[^>]*>.*?|< .*? />
8.匹配首尾空白字符:^\s*|\s*$
注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)
9.匹配Email地址:
/^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/
注:表单验证时很实用
10.匹配网址URL:[a-zA-z]+://[^\s]*
注:网上流传的版本功能很有限,上面这个基本可以满足需求
11.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
/^[a-z0-9_-]{3,16}$/
注:表单验证时很实用
12.匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
注:匹配形式如 0511-4405222 或 021-87888822
13.匹配腾讯QQ号:[^1-9][0-9]{4,10}$
注:最少四位,最多十位
14.验证手机号:
/^((13[0-9])|(15[^4,\D])|(18[0,5-9]))\d{8}$/
15.匹配中国邮政编码:[1-9]\d{5}(?!\d)
注:中国邮政编码为6位数字
16.匹配身份证:\d{15}|\d{18}
注:中国的身份证为15位或18位
17.匹配 ip 地址:\d+\.\d+\.\d+\.\d+
注:提取ip地址时有用
18.匹配密码: /^[a-zA-Z0-9_-]{6,18}/
19.匹配地址:/^[\u4e00-\u9fa5]+[\d|-]+/;
注:有中文 有数字 有横杠-
20.匹配银行卡:/^[1-9][0-9]{18}$/;
21.匹配车牌号:/^[1-9][0-9]{18}$/;
注:省份简称(1位汉字)+发牌机关代号(1位字母)+序号(6位)
22.匹配验证码:/^(\w{4})|(\w{6})$/;
注:四位或六位,有数字有字母
23.匹配ISBN:
/^978-[0-9]-[0-9]{4}[-][0-9]{4}-[0-9X]$/;
注:共13位 978为固定 其他十位 第一位为中国的标识7 ,之后是标识出版社的2-6位数字 ,之后是出版社内刊物的流水 最后一位是校验位0-9和X
24.匹配出生年月:
/^[0-9]{4}年(([0][1-9])|([1][1-2]))月((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))日$/;
注:XXXX年XX月XX日
25.匹配姓名:
/^[\u4e00-\u9fa5]{2,}([·]*[\u4e00-\u9fa5]*)$/;
注:少数民族姓名带有 点
25.匹配Email(邮箱)地址:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
注:例:www.baidu.com