正则表达式
正则表达式
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个语法规则的字符串搜索模式。
为什么使用正则表达式
因为如果使用普通的String对象只能做一些简单的校验,稍微复杂的校验将很难实现,而使用正则表达式可以让数据校验更加简单。
正则表达式语法
语法:
pattern:表示表达式
modifiers:表示修饰符
方法一:
使用构造函数创建正则表达式对象(很少有)
构造函数:var reg = new RegExp(pattern,【modifiers】)
方法二:
直接写正则表达式
字面量:var reg = /pattern/modifiers;
正则表达式使用
检测一个字符串与正则表达式是否相匹配
修饰符
常用的表达式
常用的元字符(特殊字符)
找规律:一般小写字母的都是要匹配的,而大写都是不要匹配的。
常用的限定符(量词)
正则表达式练习
1. 邮政编码:由6个数字构成,第一位不可以是0
分析:
①由6位数字组成,可以使用\d表示数字 ②第一位不能是0,所以只能取 [1 - 9]=====>/^[1-9]/
③其它五位由数字组成======>/^[1-9]\d{5}$/
正则表达式:
/^[1-9]\d{5}$/
2. 手机号码:由13/1517/18开头的11位数字
分析:
①以13/15/17开头,第一个数字为1===> /^1/
②第二位是3/5/7,可以表示为=====>/^1[357]/
③一共由11位数字,所以除开头两个外,还剩下9位任意数字====>/^1[357]\d{9}$/
正则表达式:
/^1[357]\d{9}$/
3. QQ号码:第一位不可以是0,位数由5-12位数字组成
分析:
①一共由5-12位数字组成
②第一位不能为0===>/^[1-9]/
③其它由数字组成====>/^[1-9]\d{4,11}$/
正则表达式:
/^[1-9]\d{4,11}$/
4. 密码:字母、数字、下划线构成,6-20位
分析:
①密码由字母、下划线、数字构成=====>\w
②一共6-20位=====> /^\w{6,20}$/
正则表达式:
/^\w{6,20}$/
5. 用户名:字母、数字、下划线构成,6-16位,不能以数字开头
分析:
①字母、数字、下划线构成====>\w
②不能以数字开头====>/^([A-Z]|[a-z]|_)/
③一共由6-16位组成=====>/^([A-Z]|[a-z]|_)\w{5,15}$/
正则表达式:
/^([A-Z]|[a-z]|_)\w{5,15}$/
6. 输入年龄只能在18-40之间
分析:
①1开头只能是18和19===>/^(1[89])/
②2和3开头,第二个数可以是任意数字====>/^([23]\d)/
③4开头,只能是0====>/^40/
④综合起来表示:/^(1[89])|([23]\d)|(4[0])$/
正则表达式:
/^(1[89])|([23]\d)|(4[0])$/
7. 身份证号码:15或18位,如果是15位则全是数字,如果为18位,前17为数字,第18位为数字或字母x不区分大小写
分析:
注意看这里需要分为两种情况
情况一:只有15位时
①15位全部为数字====>/^\d{15}$/
情况二:有18位时
①前17位为数字=====>/^\d{17}/
②第18位可以是数字或字母x不区分大小写====>/^\d{17}[\dxX]$/
正则表达式:
/^(\d{15}$)|(\d{17}[\dxX])$/
8. 中文名字:三个汉字、中间必须是小或晓
分析:
①汉字使用[\u4e00-\u9fa5]====>/^[\u4e00-\u9fa5]/
②中间必须是晓或小=====>/^[\u4e00-\u9fa5][小晓]/
③由三个汉字组成====>/^[\u4e00-\u9fa5][晓小][\u4e00-\u9fa5]$/
正则表达式:
/^[\u4e00-\u9fa5][晓小][\u4e00-\u9fa5]$/