一、正则的方法
正则在项目中是经常用到的,但是有时候方法内的参数容易搞混淆,不知道是放正则还是字符串,特地归类一下这些方法,首先介绍一下正则的两种写法:
调用RegExp构造函数
let reg = new RegExp(‘自定义的正则’,‘gi’)
let regs = new RegExp(/自定义的正则/,‘gi’)
// 如
let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");
let regex = new RegExp("^[a-zA-Z]+[0-9]*\\W?_$", "gi");
字面量书写正则表达式
let reg = /自定的正则/gi
// 如
let regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;
1、test()
reg.test(str)
// 能匹配到,则返回true,否则返回false
注意:如果使用同一个正则表达式去匹配两次字符串,第一次匹配后会改变正则表达式的lastIndex值,如
var regex = /foo/g;
// regex.lastIndex is at 0
regex.test('foo'); // true
// regex.lastIndex is now at 3
regex.test('foo'); // false
2、exec()
这方法不怎么常用
var reg = /ab/g
var str = 'abdfdretabsgdg'
var result = reg.exec(str)
console.log(result)
// 能匹配到返回数组,否则返回null
注意:该方法很依赖全局‘g’否则只执行一次
二、字符串的方法
字符串的方法比较多,这里主要讲解字符串模式的匹配方法。
1、match()
该方法原理和正则的exec方法基本相似,很依赖全局‘g’,并且匹配到则返回数组,否则返回null,但是如果全局搜索则会将匹配结果全部返回到一个数组,而exec则需要一次一次的匹配,将每次返回的数组合并到一个数组中。
var reg = /ab/g
var str = 'abdfdretabsgdg'
var result = str.match(reg) // ['ab','ab']
var cc = reg.exec(str) // ['ab']
console.log(result, cc)
2、search()
search() 方法不执行全局匹配,。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。如果匹配到返回对应下标,否则返回-1。
var reg = /ab/i
var str = 'abdfdretabsgdg'
var result = str.search(reg)
var cc = str.search(reg)
console.log(result, cc) // 0 0
3、replace()
两个参数,均为必须,参数1为正则表达式,参数2为想替换的内容。如果没有全局‘g’,则只替换找到的第一个。
var reg = /ab/gi
var str = 'abdfdretabsgdg'
var result = str.replace(reg, 'cc')
console.log(result) // 'ccdfdretccsgdg'
4、split()
将字符串按照一个字符串或正则表达式切割成指定数组,第二个参数可选,可指定返回最大的数组长度。
var str = 'abdfdrccetabccsgdccg'
var result = str.split('cc')
console.log(result) // ["abdfdr", "etab", "sgd", "g"]
好记性不如烂笔头
网友评论