常用的一些方法
exec
一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)
var reg1= /^\w+$/ var str = 'w111fafdd' console.log(reg1.exec(str)) // ["w111fafdd", index: 0, input: "w111fafdd", groups: undefined]
跟match的结果有点像,但是match匹配到多个时可以返回一个满足匹配规则所有字符串的数组
第一个参数是返回能够匹配正则规则的字符串,则案例的非特殊字符
input属性的值是原来的字符串,即str
结果的index表示从第几个字符串开始匹配到的
test
一个在字符串中测试是否匹配的RegExp方法,它返回true或false
接着上面的代码
console.log(reg1.test(str)) // true
search
一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
接着上面代码
console.log(str.search(reg1)) // 0
match
一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
console.log(str.match(reg1)) //["w111fafdd", index: 0, input: "w111fafdd", groups: undefined]
跟上面exec除了调用的对象和参数不同,结果是一样,当一个字符串多个能匹配正则表达式规则时,match返回时不同的
案例:提取工资
需求:var str = ‘张三:1000,李四:5000,王五:8000。’;提取他们三人的工资并返回一个数组
使用提取组的方法
var str = '张三:1000,李四:5000,王五:8000。'; // 写一个匹配它们的正则表达式 var reg = /(\d+)/g // 使用数组用来装他们 var arr = [] while(reg.test(str)){ arr.push(RegExp.$1) //$1是提取第一个组的意思,如果上面的正则表达式的括号没加,则提取是空的字符串,因为没有分组 } console.log(arr) //["1000", "5000", "8000"]
我们可以使用一个match就可以搞定了
var str = '张三:1000,李四:5000,王五:8000。'; var reg = /\d+/g console.log(str.match(reg))// ["1000", "5000", "8000"]
replace
一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串
str.replace(parame1,parame2);就是将parame1替换成parame2
去字符串的所有空格
trim()这个方法只能去掉前后的空格,当要去掉字符串所有的空格时,使用replace替换掉所有的空格
var str = " 123AD asadf asadfasf adf " var str1 = str.replace(/\s+/g,'') console.log(str1) // 123ADasadfasadfasfadf
split
一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法
我们之前使用split()时大部分是将字符串切割为数组,括号跟着的是一个字符串
var dateStr = '2015-1-5'; var arr = dateStr.split('-') console.log(arr) // ["2015", "1", "5"]
参数为正则表达式
接着上面的代码
var arr1 = dateStr.split(/[-]/) console.log(arr1)
量词:+
例如:\d:代表一次 \d\d:代表2次 \d+:代表出现若干次
全局匹配:g
例如:/a/g
任意字符:[abc];
例子:[abc]s————as,bs,cs
范围 [a-z],[0-9]
例子:id[0-9]————id0,id1,id2…id9
排除:[^a] 排除掉a字符
例子:o[^0-9]————oat,o?t,o t
组合
[a-z0-9A-Z] 小写字母或数字或大写字母只能出现一次
转义字符
.(点) 任意字符
\d 数字0-9
\w a-z小写字母 英文、数字、下划线
\s 空白字符
\D [^0-9]
\W [^a-z0-9]
\S 非空白
常用量词
{n} 正好出现n次
例子: \d{8} 数字正好出现8次
[1-9]\d{7} 1到9开头的数字正好出现8次
{n.m} 最少n次 最多m次
例子: [1-9]\d{4,10} 5,10
{n,} 最少n次,最多不限
+ {1,} 最少出现1次 最多不限
? {0,1} 最少0次最多1次 可有可无
例子: 010-87495698-23 (0\d{2,3})?[1-9]\d{7}(-\d{1,5}) 分区可有可无 号码8位 分机1为或5位
* {0,} 可以无也可以无线有