正则表达式

本文深入解析了正则表达式的定义、语法及应用,包括直接量语法和创建RegExp对象的两种方式,详细介绍了修饰符、表达式、量词以及RegExp对象方法等核心概念,并通过实例演示了正向预查和科学计数法的转换技巧。

定义正则表达式方式有两种

  • 直接量语法

    /pattern/attibutes

  • 创建RegExp对象的语法

    new RegExp(pattern, attributes)

可以把/pattern/attibutes放到new RegExp(pattern, attributes)pattern 中创建两个不一样的对象。

修饰符(attibutes)

  • i

    忽略大小写

  • g

    全局匹配

  • m

    执行多行匹配。请看下面的例子

    var reg = /^[a-z]/gm
    var reg2 = /^[a-z]/g
    var str = 'ab\nc\na'
    str.match(reg) // ["a", "c", "a"]
    str.match(ref2) // ["a"]
    复制代码

表达式

pattern 可以使用表达式的方式进行匹配

1. 方括号

[] 用于表示查找某个范围内的字符

2. 元字符

元字符即拥有特殊含义的字符


.       // 表示除换行\n和行结束符\r以外的 
/w === [0-9A-z_]
/W === [^/w]
/d === [0-9]
/D === [^/d]
/s === [/n/t/f/r/v]
/S === [^/s]
/b === 单词的边界   
/B === 非单词边界
...

复制代码
3. 量词

量词的使用都是贪婪算法,能多则不少,如果想要使用少的情况,可以在任何量词后面使用


n+      [1, ]
n*      [0, ]
n?      [0,1]
n{x}    [x]
n{x,y}  [x, y]

n$   // 匹配任何结尾为n的字符串
^n   // 匹配任何开头为n的字符串
?=n  // 匹配任何其后紧跟指定字符串n的字符串
?!n  // 匹配任何其后没有紧跟指定字符串n的字符串

复制代码

RegExp 对象方法

  • exec()
  • test()

支持正则表达式的string对象的方法

  • search()
  • match()
  • replace()
  • split()

其他

正向预查(正向断言)
// 查找以b结尾的字符,但不包括b
var str = 'abacbaa'
var reg = /\w(?=b)/g
// var reg = /\w(?!b)/g
str.match(reg) // ['a', 'c']

复制代码

题目

// (2014年百度最后一题)科学计数法:把 100000000 改成 10.000.000
// 思路:
//    1. 从后往前匹配3的倍数; //  /((/d{3})+$)/g
//    2. 匹配的是空字符;      //  正向预查 /?=((/d{3})+$)/g
//    3. 把该空字符替换成 . ;  //  replace()
//    4. 边界的匹配规则取消;  //  /?=(\B)((/d{3})+$)/g

var str = '100000000'
var reg = /?=(\B)((\d{3})+$)/g
str.str.replace(reg, '.')  //  100.000.000

复制代码

待续...

转载于:https://juejin.im/post/5bb71e5bf265da0a8e6d99d3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值