2020-07-31 字符串中的正则匹配

记住:正则表达式是匹配模式,要么匹配字符,要么匹配位置

字符匹配攻略

1、模糊匹配:纵向模糊匹配和横向模糊匹配
横向模糊匹配使用量词如{m,n},表示连续出现最少m次,最多n次
纵向模糊匹配使用字符祖如[abc],表示a、b、c中任意一个

2、字符祖:需要强调是的,虽是字符祖,但只是其中一个字符
范围表示法:用-连接
排除字符组:用[^]表示除了之外
常见的简写形式:
\d:表示[0-9],表示是一位数字,digit
\D:表示[^0-9],表示非数字外的任意字符
\w:表示[0-9a-zA-Z_],表示数字、大小写u和下划线
\W:表示[^0-9a-zA-Z_],非单词字符
\s:表示[\t\v\n\r\f],表示空白符,包括空格,水平制表符,换行符,回车符等
\S:表示非空白符
.:表示[^\n\r\u2020\u2029],通配符

如果要匹配任意字符,可以用[\d\D][\w\W][\s\S][^]中任何一个

3、量词:也叫重复,记住一些简写形式
简写形式:
{m,}表示至少出现m次
{m}等价于{m,m},表示出现m次
?等价于{0,1}表示出现或者不出现
+等价于{1,}表示出现至少一次
*等价于{0,}表示出现任意次

4、贪婪与惰性匹配
贪婪是尽可能的多匹配,惰性与之相反

5、多选分支
(p1|p2)表示其中任意一个,用管道符号分隔,是惰性的即匹配一个后面就不匹配了

6、案例分析
匹配16进制颜色:/#[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/g
匹配时间:/^([01][0-9]|[2][0-3]):[0-5][0-9]$/
匹配日期:/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/

正则表达式位置匹配攻略

一共有6个锚:
^ $ \b \B (?=p) (?!p)

^:匹配开头
$:匹配结尾
\b:单词边界,具体就是\w与\W之间的位置,也包括\w与^之间的位置和\w与$之间的位置
\B:就是\b的反面意思
(?=p):p是一个子模式,即p前面的位置
(?!p):与上面相反

相关案例:
数字的千位分隔符表示法
/(?!^)(?=(\d{3})+$)/g

正则表达式括号的作用

分组:如(ab)+
分支:如(p1|p2)

提取数据:使用match方法,返回一个数组,成员为匹配到第一个字符串
替换:replace(regx,fn),第二个参数指代相应的分组
非捕获括号:(?:p)和(?:p1|p2|p3)表示不返回该组匹配的内容,即匹配的结果中不计入这个括号

相关案例:
字符串的trim方法模拟:/^\s+|\s+$/g
单词首字母大写:/(?:^|\s)\w/g

修饰符:共3个
g:全局匹配
i:忽略字母大小写
m:多行匹配

字符串方法(match、replace、search)

match方法:返回的是一个数组,第一个元素是整体匹配结果,然后是各个分组(括号里)匹配的内容,然后是匹配下标,最后是输入的文本。另外,正则表达式是否有修饰符g,match返回的数组格式是不一样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值