继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JavaScript 正则表达式笔记

Smallearly233
关注TA
已关注
手记 1
粉丝 0
获赞 6

js通过内置对象RegExp支持正则表达式 实例化RegExp对象的两种
1.字面量:
var reg = /\bis\b/g;
2.构造函数
var reg = new RegExp('\bis\b','g');

修饰符
g:global,全文搜索,不添加,搜到第一个匹配就停止
i: ignore case,忽略大小写,正则默认大小写敏感
m: multiple lines 多行搜索

元字符:
正则表达式由两种基本字符类型组成:
--原义文本字符
—元字符
元字符是在正则表达式中有特殊含义的非字母字符
*、+、?、$、^、.、|、\、()、{}、[]
\b 无符号 空格…

    \t    水平制表符
    \v    垂直制表符
    \n    换行符
    \r    回车符
    \0    空字符
    \f    换页符
    \cX    与X对应的控制字符是(Ctrl+X)
元字符在不同的场景作用不同

字符类:
[abc]  利用元字符来构建一个简单的类,所谓类是指符合某些特性的对象,一个泛指而不是特指某个字符,表达式[abc]把字符a或b或c归为一类,表达式可以匹配这类的字符。

范围类:
[a-zA-z] 规定一个范围

预定义类:
. [^\r\n] 除了回车符和换行符之外的所有字符
\d [0-9] 数学字符
\D [^0-9] 非数字字符
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 单词字符(字母,数字下划线)
\W [^a-zA-Z_0-9] 非单词字符

匹配一个ab+数字+任意字符的字符串
ab\d.

量词:
? 出现零次或一次(最多出现一次)

  • 出现一次或多次(至少出现一次)
  • 出现零次或多次(任意次)
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次

    \d{20}\w\d?\w+\d*\d{3}\w{3,5}\d{3,}

边界:
正则表达式还提供了几个常用的边界匹配字符
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界

字符类取反:
[^abc] 使用元字符^创建 反向类/负向类,不属于此类的内容

贪婪模式:
12345678 \d{3,6} //123456,78

非贪婪模式:
让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试就是非贪婪模式
做法很简单,在量词后加上?即可
‘123456789’.match(/\d{3,5}?/g)
["123","456","789"]

分组:
表达式加(),$1获得值

取消分组:
不希望捕获某些分组,只需要在分组内加上?:就可以
(?:Byron).(ok)

前瞻
正则表达式从文本头部开始解析,文本尾部方向,称为“前”
前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反

正向前瞻    exp(?=assert)
                    ‘a2*34v8’.replace(/\w(?=\d)/g,'x')
负向前瞻    exp(?!assert)
                    ‘a2*34v8’.replace(/\w(?!\d)/g,'x')
正向后顾    exp(?<=assert)    JavaScript不支持
负向后顾    exp(?<!assert)    JavaScript不支持

对象属性:
global:是否全文搜索
ignore case:是否大小写敏感,默认是fase
multiline:多行搜索,默认值是false
lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置
source:正则表达式的文本字符串

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP

热门评论

没人吗?.........

查看全部评论