Your SlideShare is downloading. ×
Java script正则
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Java script正则

386
views

Published on

Published in: Design

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
386
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
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. 谢谢各位!