正则
什么是正则表达式
1) 什么是正则表达式
正则表达式的基本使用
1) 正则表达式的创建2) 元字符3)方括号表示法 4)量词5)修饰符
正则表达式和字符串
1)正则表达式的相关方法2)字符串的相关方法
正则表达式的应用
1)正则表达式的应用
一、什么是正则表达式
正则表达式(regular expression) 描述了字符串的“构成模式”,经常被用于检查字符串是否符合预定的格式要求
// 定义正则
var regexp=/^\d{6}$/
var str='154255'
console.log(regexp.test(str)) //true
//正则表达式的创建
二、正则表达式的基本使用
1 、正则表达式的创建
使用 /内容/的语法形式,可以快速创建正则表达式
也可以使用new RegExp(内容)的形式,创建正则表达式
使用typeof运算符检查正则表达式的类型,结果是object
var regexp1=/^\d{6}$/
var regexp2=new RegExp('^\\d{6}$')
console.log(regexp1.test('121456')) // true
console.log(regexp2.test('121456')) // true
console.log(typeof regexp1) //object
console.log(typeof regexp2)//object
2、元字符
//题目1:某快递公司的单号格式111-2222-555
var regexp3 = /^\d{3}-\d{4}-\d{3}/
console.log(regexp3.test('222-2222-333')) //true
// 题目2:某产品的验证秘钥形式是这样的:XXX-XXXX-XXX,其中口表示字母数字或者下划线,其中X表示字母数字或者下划线,
var regexp3 = /^\w{3}-\w{4}-\w{3}/
字符的转义:在特殊字符之前的反斜杠\表示下一个字符不是特殊字符,应该按照字面理解
//题目3:某产品批号形式为:123.4567#89,请使用正则表达式检查某字符串是否符合此格式
var regexp4=/^\d{3}\.\d{4}\#\d{2}$/
console.log(regexp4.test('123.4567#89')) //true
3 、方括号的用法
console.log('***********分割***********')
// 使用方括号,比如[xyz],可以创建一个字符集合,表示匹配方括号中的任意字符
console.log(/^[yds]\d{2}$/.test('y22')) //true
// 题目1:请验证某字符串是否是5位字母,大小写均可
console.log(/^[A-Za-z]{5}$/.test('dfsfD'))
// 题目2:请验证某字符串是否是5位,且仅有小写字母、点构成
console.log(/^[a-z\.]{5}$/.test('dfs.d'))
// 题目3:请验证某字符串是否是4位小写字母,且最后一位不能是m字母
console.log(/^[a-z]{4}[^m]$/.test('dfscx'))
4、量词
// 题目1:请验证字符串是否符合手机号码的规则:11位数字,并且肯定以1开头
console.log(/^1\d{10}$/.test('17894561231'))
// 题目2:请验证某字符串是否是这样的:以字母开头,中间是 任意位数字(最少1位)构成,并以字母结尾
console.log(/^[a-zA-Z]\d+[a-zA-Z]$/.test('a55b'))
// 题目3:请验证某字符串是否符合网址规则:以www.开头,中间是任意位的字符(字母数字下划线,最少一位),最后以.com结尾 ,也可以以.com.cn结尾
console.log(/^www\.\w+\.com(\.cn)?$/.test('www.baidu.com.cn'))
4 、修饰符 (后续补全此功能)
// 修饰符的使用方法
var re=/m/gi
var re2=new Regexp('m','gi')
三、正则表达式和字符串
1、正则表达式的相关方法
// exec方法匹配第一次然后匹配下一次会重上一次匹配位置,继续往下匹配
var str = 'bhd456sdd78ee787rree777'
var regexps = /\d+/g
var result = regexps.exec(str) //["456", index: 3, input: "bhd456sdd78ee777rree777", groups: undefined]
while (result = regexps.exec(str)) {
console.log(result[0])
2、字符串相关方法
var str1='ehe34hfr56hdfh5'
// search 和indexOf很类似,不能使用正则
console.log(str1.search(/\d+/g)) //3
console.log(str1.search(/\.+/g))//-1
// match()方法 返回数组 找不到返回null
console.log(str1.match(/\d+/g)) //(3) ["34", "56", "5"]
// replace()方法
console.log(str1.replace(/[a-z]/g,'X'))
// split()方法
console.log(str1.split(/\d+/g)) // ["ehe", "hfr", "hdfh", ""]