正则常用的符号知识点
- 限定符
* 表示前面的表达式出现0次到多次{0,}
+ 表示前面的表达式出现一次到多次{1,}
? 最少0次,最多一次(可以阻止贪婪模式){0,1}
{} 更加明确的表示前面的表达式出现的次数
- 其它
. 表示的是除了 \n以外的任意一个字符
[] 表示范围
[1-9] 表示一到九的任意一个数字
[0-9a-zA-Z] 表示所有的数字或则字母中的一个
| 或则
[0-9]|[a-z] 要么是一个数字,要么是一个英文字母
() 分组或提高优先级
^ 表示以什么开头,或则取反
^[a-z] 以小写字母开头
[^0-9] 非数字
$ 表示以什么结束
[a-z][0-9]以数字结束
\d 任意一个数字
\D 非数字
\s 空白符
\S 非空白符
\w 非特殊字符 [0-9a-zA-Z_.-]
\W 特殊字符
\b 单词边界
\B 非单词边界
常用的一些方法
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)
总结
以上的所有方法并不会改变调用它的字符串 | 正则表达式,记得它们如何使用和返回值即可