记录前端开发学习与积累

正则表达式是提高效率的利器(一)

本文于464天之前发表,文中内容可能已经过时。如有疑问,欢迎在github中给我留言(用户名:zhangyan123)。

RegExp

对于正则表达式,不同的语言有着不同的实现(每种语言的正则表达式互相之间的关系类似方言,同理不同表达),js采用的是Perl5的语法。

  • 构造正则对象的方式:
    • 优选字面量方式:var re = /^j.*t$/gim
    • 构造器方式:var re = RegExp(‘^j.*t$’,’gim’)
  • 正则对象的属性:
    • global 全局检测,默认false;
    • ignoreCase 忽略大小写,默认false;
    • multiline 跨行搜索,默认false;
    • lastIndex 搜索开始位置索引值,默认0;
    • source 存储了正则对象的pattern
      以上属性均在对象创建时设置,使用对象过程中不可修改(除了lastIndex).
  • 应用正则对象的方法:

    • test() 返回布尔值,被测字符串符合模式true
    • exec() 返回匹配到字符串组成的数据
      以上为正则对象自带方法,下面总结字符串对象中应用正则对象的场景
    • match() 返回匹配内容的数组
    • search() 返回第一个匹配内容所在的位置索引值
    • replace() 将匹配的文本替换为指定的字符串

      1. 回调式替换

        1
        2
        3
        4
        s.replace("/(.*)@(.*)\.(.*)/g",callback);
        function callback(匹配到的内容(例子函数体内使用match表示),模式分组匹配到的字符串组,匹配内容所在位置索引值,被搜索的字符串){
        return "_"+match;
        }
      2. (pattern)当匹配模式被放在括号中时,标明该匹配模式的匹配串是可获取的,这种模式成为捕获模式,使用$1…$9等参数来指代
        (?:pattern)相对与捕获模式可以理解这种非捕获模式,捕获过程中直接跳过这些模式,eg:

        1
        2
        "regular expression".replace('/(?:r)(e)/g','$1$1');
        //"eegular expeession"匹配到了所有的‘re’并用ee替换,可见r没有被捕获进$1
      myBlog
    • split() 以模式匹配的内容为分隔点,将字符串分割为数组
React创新语法JSX

  1. 1. RegExp