java script正则

14
Javascript 正正正正 By Denis UED Team Design

Upload: fangdeng

Post on 23-Jun-2015

257 views

Category:

Design


4 download

TRANSCRIPT

Page 1: Java script正则

Javascript正则入门By: Denis

UED Team Design

Page 2: Java script正则

正则的起源 正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。

1956 年 , 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。

Page 3: Java script正则

正则并不是那么神秘 一个正则表达式就是由普通字符(例如 a b c d )以及特殊字符(称为元字符)组成的文字模式。

它是一个规则,一个模板 它是用来匹配字符串的,从提供的字符串中查找符合规则的 1 段或多段字符片段。当然要是匹配不到,那就是 0 段了。

Page 4: Java script正则

认识正则表达式中的“ \” 表示正则语法中具有特殊意义的元字符

\. 匹配除换行符意外的任意字符 \d 任意一个 0-9的数字 … …

表示正则语法中具有特殊意义的字符 \? 匹配一个真正的问号 \+ 匹配一个真正的加号 \\ 匹配一个真正的反斜杠 … …

表示不同的进制或字符集( n 代表一个数字) \0nn 八进制字符 \xnn 十六进制 \unnnn Unicode(汉字必需转成 Unicode再匹配)

Page 5: Java script正则

认识常用的元字符 /./ 匹配除换行符以外的任意字符 /\w/ , /\W/ 匹配一个字母或数字或下划线或汉字 /\s/ , /\S/ 匹配一个空格 /\d/ , /\D/ 匹配一个数字 /\b/ , /\B/匹配单词边界(开始或结束) /^/ 匹配字符串的开始 /$/ 匹配字符串的结束 注意:

上面所有后面的大写是反义元字符 JavaScript中“单词”指的是由 \w组成的字符串

Page 6: Java script正则

认识常用的限定符 /.?/ 0 或 1 个 /.+/ 1 或多个 /.*/ 0 或 1 或多个 /.{n}/ n 个 /.{n,}/ ≥ n 个 /.{n,m}/ n≤且 ≤ m

Page 7: Java script正则

认识常用的限定符 /.?/ 0 或 1 个 /.+/ 1 或多个 /.*/ 0 或 1 或多个 /.{n}/ n 个 /.{n,m}/ n≤且 ≤ m /.{n,}/ ≥ n 个

Page 8: Java script正则

“[]”和“ ()” /[…]/ 匹配范围内的一个字符 /[^…]/ 匹配不在范围内的一个字符 /(…)/ 是一个分组,匹配符合正则表达式…的字符串 捕获,匹配内容

/(…)/ 通过 \1 \2 …按次序引用 /(?<name>…)/ 通过 \k<name> 引用 /(?:…)/ 无法后期引用

零宽断言,部匹配内容 /(?=…)/ 后面的字符串匹配… /ali(?=baba)/ alibaba,alimama /(?<=…)/ 前面的字符串匹配… /(?<=my)baba/ mybaba,yourbaba /(?!...)/ 后面的字符串不匹配… /ali(?!baba)/

alibaba,alimama /(?<!...)/ 前面的字符串不匹配… /(?<!my)baba/

mybaba,yourbaba 注释

/(?#...)/ 这是正则的内部注释,对正则逻辑不影响

Page 9: Java script正则

条件符“ |” 左右两边条件符合其一即可 /(…)|(…)/

Page 10: Java script正则

贪婪与懒惰 字面意思上解释,贪婪就是尽可能多的匹配;懒惰就是尽可能少

的匹配。 懒惰的限定符(以 abbbbbbbbb为例):

/ab??/ abbbbbbbbb /ab?/ abbbbbbbbb

/ab+?/ abbbbbbbbb /ab+?/ abbbbbbbbb /ab*?/ abbbbbbbbb /ab*/ abbbbbbbbb /ab{3,}?/ abbbbbbbbb /ab{3,}/

abbbbbbbbb /ab{3,5}?/ abbbbbbbbb /ab{3,5}/

abbbbbbbbb

Page 11: Java script正则

处理标记“ i”“g”“m” i 是忽略大小写 g 是匹配所有(默认只匹配第一个) m 是多行模式:更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行

尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 ( 在此模式下 ,$的精确含意是 : 匹配 \n之前的位置以及字符串结束前的位置 .)

Page 12: Java script正则

JavaScript中跟正则有关的方法 /…/.test(‘…’) 返回 true|false /…/.exec(‘…’) 返回数组 ‘…’.match(/…/) 返回数组 ‘…’.replace(/…/, ’…’) 返回字符串 ‘…’.replace(/…/, function(matchStr, group1,

group2, …, originalStr){

}) 返回字符串

Page 13: Java script正则

大家来看几个正则 ^\d{2,8}$ ^[A-Za-z]+$ s(?=p)[^\s]* ^[+-]?[1-9]*\d(\.\d+)?$ ^[\u3000\s]*)|([\u3000\s]*$ <([^>\s]+)\s*[^>]*>[^<]*<\/\1>|<([^>\s]+)\s*[^>]*\/> 使用 replace: “”

Page 14: Java script正则

谢谢各位!