Javascript 正则入门 By : Denis UED Team Design
正则的起源 <ul><li>正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。 </li></ul><ul><li>1956  年 ,  一位叫  Stephen Kleene  的美国数学家在  McCulloch  和  ...
正则并不是那么神秘 <ul><li>一个正则表达式就是由普通字符(例如 a b c d )以及特殊字符(称为 元字符 )组成的文字模式。 </li></ul><ul><li>它是一个规则,一个模板 </li></ul><ul><li>它是用来匹...
认识正则表达式中的“  ” <ul><li>表示正则语法中具有特殊意义的元字符 </li></ul><ul><ul><li>. 匹配除换行符意外的任意字符 </li></ul></ul><ul><ul><li>d 任意一个 0-9 的数字 </...
认识常用的元字符 <ul><li>/ . / 匹配除换行符以外的任意字符 </li></ul><ul><li>/ w / , / W / 匹配一个字母或数字或下划线或汉字 </li></ul><ul><li>/ s / , / S / 匹配一个...
认识常用的限定符 <ul><li>/. ? / 0 或 1 个 </li></ul><ul><li>/. + / 1 或多个 </li></ul><ul><li>/. * / 0 或 1 或多个 </li></ul><ul><li>/. {n}...
认识常用的限定符 <ul><li>/. ? / 0 或 1 个 </li></ul><ul><li>/. + / 1 或多个 </li></ul><ul><li>/. * / 0 或 1 或多个 </li></ul><ul><li>/. {n}...
“ []” 和“ ()” <ul><li>/ […] / 匹配范围内的 一个 字符 </li></ul><ul><li>/ [^…] / 匹配不在范围内的 一个 字符 </li></ul><ul><li>/ (…) / 是一个分组,匹配符合正则...
条件符“ |” <ul><li>左右两边条件符合其一即可 </li></ul><ul><li>/(…) | (…)/ </li></ul>
贪婪与懒惰 <ul><li>字面意思上解释,贪婪就是尽可能多的匹配;懒惰就是尽可能少的匹配。 </li></ul><ul><li>懒惰的限定符(以 abbbbbbbbb 为例): </li></ul><ul><ul><li>/ab ?? /  ...
处理标记“ i”“g”“m” <ul><li>i 是忽略大小写 </li></ul><ul><li>g 是 匹配所有(默认只匹配第一个) </li></ul><ul><li>m 是多行模式:更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和...
JavaScript 中跟正则有关的方法 <ul><li>/…/.test(‘…’) 返回 true|false </li></ul><ul><li>/…/.exec(‘…’) 返回数组 </li></ul><ul><li>‘…’ .match...
大家来看几个正则 <ul><li>^d{2,8}$ </li></ul><ul><li>^[A-Za-z]+$ </li></ul><ul><li>s(?=p)[^s]* </li></ul><ul><li>^[+-]?[1-9]*d(.d+)...
谢谢各位!
Upcoming SlideShare
Loading in...5
×

Javascript正则

294

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
294
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Javascript正则

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

    Clipping is a handy way to collect important slides you want to go back to later.

×