Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

指尖上的正则表达式

802 views

Published on

SINAUED SHARE

Published in: Technology
  • Be the first to comment

  • Be the first to like this

指尖上的正则表达式

  1. 1. 指尖上的正则 表达 式 产 品事业 部 - 戢运 鹏 2012.10.24
  2. 2. 产 品事业 部 目标 1.了解正则 表达 式的历 史和现 状 2.熟悉正则 表达 式的语 法 3. 在实际 的开发 中正确运 用相关 API 4. 根据实际 需求,编 写出简单 的正则 表达 式
  3. 3. 产 品事业 部 目录 1.正则 表达 式是什么 2.正则 表达 式的语 法 (JavaScript) 3.JavaScript 中的正则 API 4.实 例解析
  4. 4. 正则 表达 式的由来
  5. 5. 产 品事业 部 正则 表达 式的定义 模板 / 模式 匹配 引用
  6. 6. 产 品事业 部 正则 表达 式的语 法 ^$.*+?=!:|/()[]{} b B d D w W [xyz] [^xyz] [a-z] [^a-z] {n} {n,} {n,m} (pattern) (?:p) (?=p) (?!p) f n r s S t v
  7. 7. 产 品事业 部 字面量字符 (Literal Characters) 字符 匹配 示例 f 换页符 (u000C) n 换行符 (u000A) r 回车 (u000D) o NUL 字符 (u0000) t 制表符 (u0009) v 垂直制表符 (u000B) xnn 由十六进制数 nn 指定的拉丁字符 x0A 等价于 n uxxxx 由十六进行 xxxx 指定的 Unicode 字符 u0009 等价与 t cX 控制字符 (X 的值必须是 A-Z 或 a-z) cJ 等价于换行符 n
  8. 8. 产 品事业 部 字符类 (Character Classes) 元字符 行为 示例 [xyz] 位于括号内的任意字符 [abc] 匹配 plain 中的 a. [^xyz] 不在括号之中的任意字符 [^abc] 匹配 plain 中的 p. w 等价于 [a-zA-Z0-9_] W 等价于 [^a-zA-Z0-9_] s 任何 Unicode 空白符 [ fnrtv] S 任何非空白字符 [^ fnrtv] d 等价于 [0-9] D 等价于 [^0-9]
  9. 9. 产 品事业 部 字符类 (Character Classes) 元字符 行为 示例 [b] 退格直接量 ( 特例 ) . 除换行符和其它 Unicode 换行符之外的任意 a.c matches "abc", "a1c", 字符 ,[sS] 匹配任意字符 and "a-c".
  10. 10. 产 品事业 部 重复 (Repetition) 元字符 行为 示例 匹配至少 n 次 , 但不超过 m 次 ,n 和 m 必 {n,m} 须是非负整数 , 且 n<=m ? 等价于 {0,1} {n,} 匹配至少 n 次 o{2,} 不匹配 Bob 中的 o, 但匹配 food 中的 o. {n} 恰好匹配 n 次 o{2} 不匹配 Bob 中的 o, 但匹配 food 中的 o. ? 匹配 0 次或 1 次 , 等价于 {0,1}. zo? 匹配 "z" and "zo", 但 不匹配 "zoo". + 匹配 1 次或多次 , 等价于 {1,}. zo+ 匹配 "zo" and "zoo", 但不匹配 "z". * 匹配 0 次或多次 , 等价于 {0,}. zo* 匹配 "z" 和 "zoo".
  11. 11. 产 品事业 部 非贪 婪的重复 (non-greedy) 元字符 行为 示例 *? o+? 匹配 "oooo" 中的一 +? 在重复字符后加上问号 , 匹配模式就是非贪 个 "o", o+ 则匹配所有的 ?? 婪的匹配 . 这种模式会尽可能少的对目标字 "o". {n}? 符串进行匹配 /a+?b/.exec(aaab) {n,}? {n,m}?
  12. 12. 产 品事业 部 选择 、分组 和引用 元字符 行为 示例 | ( 选择 ) 匹配该符号左边或右边的子表达式 (z|f)ood 匹配 zood 或 food ( 组合 ) 将几个项目组合成一个单元 , 这个 (A|B) [1-9] 匹配 "A5", 字 (pattern) 单元可由 *,+,? 和 | 等符号使用 , 而且还可 母 A 被保存 , 可通过 n 或 记住和这个组合匹配的字符以供后面的引用 RegExp 的 $1-$9 引用该值 使用 (?:pattern) 只组合 , 不记忆 ai(?:r|R) 等价于 air|aiR n 和第 n 个分组第一次匹配的字符串相匹配
  13. 13. 产 品事业 部 指定匹配的位置 元字符 行为 示例 匹配字符串的开头 , 在多行检索中 , 匹配一 ^ 行的开头 匹配字符串的结尾 , 在多行检索中 , 匹配一 $ 行的结尾 erb 匹配 never 中的 b 匹配一个单词的边界 er, 但不匹配 verb 中 B 匹配非单词边界 的 er. (?=p) 匹配 pattern 前面的位置 ^(?=.*d).{4,8}$ (?!p) 匹配后面跟的不是 pattern 的位置
  14. 14. 产 品事业 部 标志 字符 含义 i 忽略大小写 g 执行全局匹配 , 即找到所有的匹配 , 而不是在找到第一个匹配后停止 多行模式 ,^ 匹配一行的开头和字符串的开头 ,$ 匹配一行的结尾或字 m 符串的结尾
  15. 15. JavaScript 中的正则 API
  16. 16. RegExpString
  17. 17. RegExpexec( ) test( )
  18. 18. Stringmatch( ) replace( ) search( ) split( )
  19. 19. 实例解析
  20. 20. 产 品事业 部 E-mail 地址的合法性验证 问题 描述 使用正则表达式验证 E-mail 地址的合法性 解决方案 1 简单形式 --> ^S+@S+$ 它只验证 E-mail 地址中包含了单个 @ 符号,且不包含任何空白 解决方案 2 对字符加限制的简单形式 --> ^[w.-]+@[w.-]+$ 解决方案 3 包括所有字符的简单形式 --> ^[w!#$&*+/=?|.-]+@[w.-]+$
  21. 21. 产 品事业 部 对 手机号进 行精确 的合法性验证 问题 描述 使用正则表达式验证正确的手机号 (13800138000) 解决方案 1 简单 形式 --> /^d{11}$/ 它只验证 11 位数字 解决方案 2 对前三位数字进行限制 --> /^1[3|5|8]d{9}$/ 解决方案 3 获取当前的运营商 --> /^(1[3|5|8]d)d{8}$/
  22. 22. 产 品事业 部 验证 日期 问题 描述 使用正则表达式验证日期 (YYYY-MM-DD) 解决方案 1 简单 形式 --> /^d{4}-d{2}-d{2}$/ 解决方案 2 较为严谨 的形式 --> /^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/ 解决方案 3 连 接符保持一致 , 且可以是 - 或 / --> /^(d{4})([-/])(0[1-9]|1[0-2])2(0[1-9]|[1-2][0-9]|3[0-1]) $/
  23. 23. Referencehttp://msdn.microsoft.com/en-us/library/z908hy33(v=vs.94).aspxexec()http://msdn.microsoft.com/en-us/library/a55e5s6b(v=vs.94).aspxtest()http://msdn.microsoft.com/en-us/library/7df7sf4x(v=vs.94).aspxmatch()http://msdn.microsoft.com/en-us/library/t0kbytzc(v=vs.94).aspxreplace()http://www.w3school.com.cn/js/jsref_obj_regexp.aspregexp obj精通正则表达式 ( 第三版 )正则表达式经典实例
  24. 24. Q&A
  25. 25. 谢谢!

×