总结:js正则表达式

1.定义
正则表达式目的在于处理字符串的查找、验证、修改、替换

var reg1 = new RegExp('s','g'); // 构造函数的写法
var reg2 = /s\d?/g; // 字面量写法

2.正则表达式方法

test():判断字符串是否存在符合正则表达式的子字符串,存在返回true,反之返回false
exec():返回一个数组,包括符合正则表达式条件的子字符串的元素和位置

console.log(reg1.test('loves'));  // true
console.log(reg2.exec('as1s2bsa')); // ["s1", index: 1, input: "as1s2bsa", groups: undefined]

3.回顾字符串方法
search: 查找子串,返回被查找到的下标
match: 返回被查找到所有符合条件元素的数组,如果不使用/g全局查找跟exec()一样
replace: 替换,返回的是新字符串
split: 切割

var str = 'sabcsabcs';
console.log(str.search(/abc/g)); // 1
console.log(str.match(/abc/g)); // ["abc", "abc"]
console.log(str.replace(/c/g,'f')); // sabfsabfs
console.log(str.split(/b/g)); // ["sa", "csa", "cs"]

4.正则表达式规则
组成正则表达式最基础的字符称为原字符
(1)修饰符:
i:执行对大小写不敏感匹配
g:执行全局匹配
m:执行多行匹配
(2). 通配符,只能代表一个字符,如果需要使用.字符而不是通配符,就需要.进行转义
(3)字符类
**[ad]:**在括号中的字符仅可以选择一个字符,可以理解为或的意思,要么a要么是d,在[]中.仅代表字符,不是通配符
字符类范围:[a-zA-Z0-9]
反义:[^0-9]:除了0-9之外的其他一个字符
转义字符类:
\w:代表[a-zA-Z0-9_]
\W:代表[^a-zA-Z0-9_]
\d:代表[0-9]
\D:代表[^0-9]
\s:代表空白字符
\S:代表非空白字符

var str = 'cat121cotcdtcoot';
console.log(str.match(/c.t/g));  // ["cat", "cot", "cdt"]
console.log(str.match(/c[ao]t/g)); // ["cat", "cot"]
console.log(str.match(/[a-z][0-9]/g)); // ["t1"]
console.log('wq520'.match(/[^0-9]/g)); // ["w", "q"]

5.重复
{a,b}:最少重复a次,最多重复b次
{a,}:匹配a到任意次
*: {0,}
+: {1,}
?: {0,1}

console.log('aaaaaaa'.match(/a{2,4}/g)); // ["aaaa", "aaa"]
console.log('aaaa'.match(/.*/g)); // ["aaaa", ""]
console.log('aaaa'.match(/.+/g)); // ["aaaa"]
console.log('aaaa'.match(/.?/g)); // ["a", "a", "a", "a", ""]

6.非贪婪匹配:任何范围性重复,在重复的次数后增加?就可以实现最小匹配次数

console.log('abcdefg'.match(/\w{1,8}?/)); // ["a", index: 0, input: "abcdefg", groups: undefined]
console.log('abcdefg'.match(/\w{1,8}?/g)); // ["a", "b", "c", "d", "e", "f", "g"]
console.log('abcdefg'.match(/\w{2,6}?/g)); // ["ab", "cd", "ef"]
console.log('abcdefg'.match(/.*?/g)); // ["", "", "", "", "", "", "", ""]

7.或者 |

  console.log('abcdef'.match(/abc|def/)); // ["abc", index: 0, input: "abcdef", groups: undefined]
  console.log('abcdef'.match(/abc|def/g)); // ["abc", "def"]

8.^以…开头 $以…结尾

console.log('2013-08-081'.match(/^\d{4}-\d{2}-\d{2}$/)); // null
console.log('2013-08-081'.match(/\d{4}-\d{2}-\d{2}/)); // ["2013-08-08", index: 0, input: "2013-08-081", groups: undefined]

9.分组: 使用()完成分组

console.log(/\d{4}(-\d{2}){2}/.test('1908-23-12')); // true
console.log('13955415175'.replace(/(\d{3})(\d{4})(\d{4})/,'$1****$3')) // 139****5175
console.log('<ul><li></li></ul>'.replace(/(<\/?)(\w+)/g,'$1div')) // <div><div></div></div>
  1. ?= 与 ?!
    ?= 紧跟其后是
    ?! 紧跟其后不是

    console.log('abAc'.match(/\w(?=c)/g)) // ["A"]
    console.log('abAc'.match(/\w(?!c)/g)) // ["a", "b", "c"]
    console.log('abAc'.match(/\w+(?=c)/g)) // ["abA"]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值