JS正则表达式

var re = new RegExp();

正则表达式是一个对象,RegExp是regular(正则)和expression(表达式)合并起来的意思,跟Array一样,可以用new操作符来创建,这样没任何意义,console.log(re)返回结果为/(?:)/

一般我们需要将正则表达式的内容作为字符串传递出去,如:

var re1 = new RegExp('a')

这里的re1将匹配字母a

var re2 = new RegExp('a','i')

这行代码表示匹配字母a,i代表ignore,忽略大小写

正则表达式有两个特殊的符号,'^','$'。它们的作用分别是指出一个字符串的开始和结束

如:

“^hello”:表示所有以“hello”开始的字符串("hellosd","hello sfsfs"等);

“haha$”:表示所有以“haha”结尾的字符串;

“^world$”:表示开始和结尾都是“world”的字符串,这个只有“world”自己本身了

“what”:表示任何包含“what”的字符串

还有三个特殊符号“*”,“+”,“?”,它们分别表示“没有或更多”,“一次或更多”,“没有或一次”

如:

“ab*”:表示一个字符串有一个a后面跟着0个或若干个b(“a”,"ab","abbbb",......)

“ab+”:表示一个字符串有一个a后面跟着1个或若干个b(“ab”,“abb”,"abbbbb",......)

“ab?”:表示一个字符串有一个a后面跟着0个或1个b(“a”,“ab”)

“a?b+$”:表示在字符串的末尾有0个或1个a跟着1个或几个b

同样的,我们也可以使用范围,用大括号括起,用以表示重复次数的范围。

“ab{2}”:表示一个字符串有一个a跟着2个b(“abb”)

“ab{2,}”:表示一个字符串有一个a跟着至少2个b

“ab{3,5}”:表示一个字符串有一个a跟着3到5个b

这里我们需要注意的是,我们必须指定范围的下限(如:“{0,2}”而不是“{,2}”)

“*”相当于“{0,}”

“+”相当于“{1,}”

“?”相当于“{0,1}”

正则的常用方法:

1.test():在字符串中查找符合正则的内容,若查找到返回true,反之返回false

用法:正则.test(字符串)

如:判断是否是手机号

var str = '18682346888'

var re = /^[1]\d{10}$/

console.log(re.test(str))//true

2、search():在字符串搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置),如果搜索失败返回-1

用法:字符串.search(正则)

var str = 'aefgvbefgefgefbg'
var re = /B/i
console.log(str.search(re))//5

3.match()在字符串中搜索符合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。

用法:字符串.match(正则)

量词:+至少出现一次 匹配不确定的次数(匹配就是搜索查找的意思)

全局匹配:g--global(正则中默认,只要搜索到符合规则的内容就会结束搜索)

如:

var str = 'sa123sd23442ggd435465lh654'
var re = /\d+/g
console.log(str.match(re))//["123","23442","435465","654"]

4、replace():查找符合正则的字符串,就替换成对应的字符串,返回替换后的内容

用法:字符串.replace(正则,新的字符串/回调函数)(在回调函数中,第一个参数指的是每次匹配成功的字符)

|:或的意思

var str = '我爱你中国,中国是好样的,中国人很棒棒'
var re = /中国|好样的/g
var newStr = str.replace(re,function(param){
    var result = ''
    for(var i = 0;i<param.length;i++){
        result+= '*'
    }
    return result
})
console.log(newStr)//我爱你**,**是***,**人很棒棒
console.log(str)//我爱你中国,中国是好样的,中国人很棒棒

从结果可以看出,原字符串并没有变化

总结常用的符号:

\s:空格

\S:非空格

\d:数字

\D:非数字

\w:字符(字母、数字、下划线)

\W:非字符

.:任意字符

\.:这里的反斜杠代表转义,代表真正的.

*:0次或若干次,相当于{0,}

+:1次或若干次,相当于{1,}

?:0次或1次,相当于{0,1}

{n,m}:至少n次,至多m次

{n,}:至少n次

{n}:正好n次





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值