正则表达式虽然再很多面试里面少有问得,但是在平时的工作中如果掌握了正则表达式的语法和使用,却常常能起到意想不到的效果。下面就让我们仔细学习一下JS正则的正面目。
正则的验证函数: test(),验证某个字符串是否符合某个组成规则 /123/g.test(2345) == new RegExp(/123/g).test(2345)
正则表达式基本的语法组成
// 正则表达式,类似于new RegExp(//)
^ 匹配字符串以什么开始 eg:/^1 匹配以1开头的字符串
$ 匹配字符串以什么结束 eg:/3$/ 匹配以3结束的字符串
[]、| 或 eg:[ab] 匹配一个a或一个b等同于a|b
{} 之前的匹配规则重复多少次 eg:a{n} a重复n次 a{n,} a重复n~∞包含n次 a{n,m}a重复n~m次
() 必须,分割两个语法 eg:(c|d) 匹配符合c或d
\ 通配符,为特殊符号之前使用 eg: %、#
‘*’ 重复0次或更多次
\d 匹配0~9的数字 eg:[0-9] 匹配0到9的数字
\D 匹配非0~9数字的其他字符 eg:[0-9] 匹配0到9的数字
\w 匹配a-zA-Z的数字 eg:[a-zA-Z] 匹配字母
\W 匹配a-zA-Z的数字 eg:[a-zA-Z] 匹配字母
\s 匹配空白字符 eg:/\s/ 字符串里包含空白字符
\S 匹配非空白字符 eg:/\S/ 字符串里包含非空白字符
/g 一直检索到最后一个字符
正则的应用 test()、search()、match()、replace()
test(): reg.test(string/number) =>return true/false 验证string/number 是否匹配Reg正则定义的规则 true:符合规则 false:不匹配规则
search(): 字符串原型链上的定义的方法 string.search(reg) 和 indexof类似,返回匹配到的第一个字符
match(): 字符串原型链上的定义的方法 string.match(reg) 返回匹配到的所有字符串数组
replace(): 字符串原型链上的定义的方法 string.replace(reg1,‘string’) 将reg匹配到的所有字符用’string’代替,并返回被代替之后的字符串(不会改变原字符串)
案例:
var str='we can fly!';
var reg=/\s/g;
console.log(reg.test(str)); //true
console.log(str.search(reg)); //2
console.log(str.match(reg)); //[" "," "]
console.log(str.replace(reg,'-')); //'we-can-fly!'
—未完待续,下次补上常用的正则表达式,常用的使用场景…