正则表达式的解读和实现

正则表达式是一项伟大的发明,读懂它的人觉得优雅、精致,读不懂的人觉得晦涩、复杂。阅读本文的前提是你已经知晓正表达式的基础知识,比如修饰符、字符匹配、位置匹配、捕获组等。

如何解读

阅读顺序

  1. 修饰符
  2. 转义符
  3. 圆括号和方括号里的内容
  4. 限定符
  5. 定位符

举个例子,比如一个匹配腾讯qq的正则表达式[1-9]\d{4,}

  1. 先看修饰符,没有
  2. 再看转义符\d,代表数字0到9
  3. 再看方框里的内容[1-9],代表数字1到9
  4. 再看限定符{4,},表示至少4个

整个正则表达式想表达的意思就通透了:全是数字,至少5位,第一位数字不能为0,其他位上的数字随意。

如何写

  1. 先理解匹配规则
  2. 按照预定的规则,从左到右依次书写
  3. 收集测试用例,进行功能测试
  4. 兼容未来版本

例如写一个匹配手机号码的正则表达式

  1. 规则:手机号由11位纯数字组成,第一位只能为1,第二位目前虽然只开放了号码3456789,但未来有可能开放新的数字,建议不做限制
  2. 这样,一个非常简单的匹配手机号码的正则表达式就诞生了:/^1\d{10}$/
江山父老能容我,不使人间造孽钱