Javascript正则
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
374
On Slideshare
374
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Javascript 正则入门 By : Denis UED Team Design
  • 2. 正则的起源
    • 正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。
    • 1956 年 , 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
  • 3. 正则并不是那么神秘
    • 一个正则表达式就是由普通字符(例如 a b c d )以及特殊字符(称为 元字符 )组成的文字模式。
    • 它是一个规则,一个模板
    • 它是用来匹配 字符串 的,从提供的字符串中查找符合规则的 1 段或多段字符片段。当然要是匹配不到,那就是 0 段了。
  • 4. 认识正则表达式中的“ ”
    • 表示正则语法中具有特殊意义的元字符
      • . 匹配除换行符意外的任意字符
      • d 任意一个 0-9 的数字
      • … …
    • 表示正则语法中具有特殊意义的字符
      • ? 匹配一个真正的问号
      • + 匹配一个真正的加号
      • 匹配一个真正的反斜杠
      • … …
    • 表示不同的进制或字符集( n 代表一个数字)
      • 0 nn 八进制字符
      • x nn 十六进制
      • u nnnn Unicode (汉字必需转成 Unicode 再匹配)
  • 5. 认识常用的元字符
    • / . / 匹配除换行符以外的任意字符
    • / w / , / W / 匹配一个字母或数字或下划线或汉字
    • / s / , / S / 匹配一个空格
    • / d / , / D / 匹配一个数字
    • / b / , / B / 匹配单词边界(开始或结束)
    • / ^ / 匹配字符串的开始
    • / $ / 匹配字符串的结束
    • 注意:
      • 上面所有后面的大写是反义元字符
      • JavaScript 中“单词”指的是由 w 组成的字符串
  • 6. 认识常用的限定符
    • /. ? / 0 或 1 个
    • /. + / 1 或多个
    • /. * / 0 或 1 或多个
    • /. {n} / n 个
    • /. {n,} / ≥n 个
    • /. {n,m} / n≤ 且 ≤ m
  • 7. 认识常用的限定符
    • /. ? / 0 或 1 个
    • /. + / 1 或多个
    • /. * / 0 或 1 或多个
    • /. {n} / n 个
    • /. {n,m} / n≤ 且 ≤ m
    • /. {n,} / ≥n 个
  • 8. “ []” 和“ ()”
    • / […] / 匹配范围内的 一个 字符
    • / [^…] / 匹配不在范围内的 一个 字符
    • / (…) / 是一个分组,匹配符合正则表达式…的 字符串
    • 捕获,匹配内容
      • / (…) / 通过 1 2 … 按次序引用
      • / (?<name>…) / 通过 k<name> 引用
      • / (?:…) / 无法后期引用
    • 零宽断言,部匹配内容
      • / (?=…) / 后面的字符串匹配… /ali(?=baba)/ ali baba,alimama
      • / (?<=…) / 前面的字符串匹配… /(?<=my)baba/ my baba ,yourbaba
      • / (?!...) / 后面的字符串不匹配… /ali(?!baba)/ alibaba, ali mama
      • / (?<!...) / 前面的字符串不匹配… /(?<!my)baba/ mybaba,your baba
    • 注释
      • / (?#...) / 这是正则的内部注释,对正则逻辑不影响
  • 9. 条件符“ |”
    • 左右两边条件符合其一即可
    • /(…) | (…)/
  • 10. 贪婪与懒惰
    • 字面意思上解释,贪婪就是尽可能多的匹配;懒惰就是尽可能少的匹配。
    • 懒惰的限定符(以 abbbbbbbbb 为例):
      • /ab ?? / a bbbbbbbbb /ab ? / ab bbbbbbbb
      • /ab +? / ab bbbbbbbb /ab +? / abbbbbbbbb
      • /ab *? / a bbbbbbbbb /ab * / abbbbbbbbb
      • /ab {3,}? / abbb bbbbbb /ab {3,} / abbbbbbbbb
      • /ab {3,5}? / abbb bbbbbb /ab {3,5} / abbbbb bbbb
  • 11. 处理标记“ i”“g”“m”
    • i 是忽略大小写
    • g 是 匹配所有(默认只匹配第一个)
    • m 是多行模式:更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 ( 在此模式下 ,$ 的精确含意是 : 匹配 n 之前的位置以及字符串结束前的位置 .)
  • 12. JavaScript 中跟正则有关的方法
    • /…/.test(‘…’) 返回 true|false
    • /…/.exec(‘…’) 返回数组
    • ‘…’ .match(/…/) 返回数组
    • ‘…’ .replace(/…/, ’…’) 返回字符串
    • ‘…’ .replace(/…/, function(matchStr, group1, group2, …, originalStr){
    • }) 返回字符串
  • 13. 大家来看几个正则
    • ^d{2,8}$
    • ^[A-Za-z]+$
    • s(?=p)[^s]*
    • ^[+-]?[1-9]*d(.d+)?$
    • ^[u3000s]*)|([u3000s]*$
    • <([^>s]+)s*[^>]*>[^<]*</1>|<([^>s]+)s*[^>]*/>
    • 使用 replace:
    • “”
  • 14. 谢谢各位!