作用
- 数据有效性验证
- 替换文本
- 查找特定文字
正则表达式语法
- 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
- 创建正则表达式
- var re = new RegExp();//RegExp是一个对象,和Aarray一样。但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
- re =new RegExp(“a”);//最简单的正则表达式,将匹配字母a
- re=new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写
- RegExp构造函数第一个参数为正则表达式的文本内容,而第一个参数则为可选项标志。标志可以组合使用
- g (全文查找)
- i (忽略大小写)
- m(多行查找)
- 示例:var re = new RegExp(“a”,”gi”);//匹配所有的a或A
- 字面量的声明方式
- 示例:var re = /a/gi;
正则表达式的方法
- test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。
- exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。当字符串不匹配re时,exec方法将返回null
- compile,把正则表达式编译为内部格式,从而执行得更快。
正则表达式的属性
- source,返回正则表达式模式的文本的复本。只读。
- lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
- $1…$9,返回九个在模式匹配期间找到的、最近保存的部分。只读。
- input ($_),返回执行规范表述查找的字符串。只读。
- lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符。只读。
- lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。
- leftContext ($`),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。
- rightContext ($’),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。
String对象一些和正则表达式相关的方法
- match,找到一个或多个正则表达式的匹配。
- replace,替换与正则表达式匹配的子串。
- search,检索与正则表达式相匹配的值。 当search方法没有找到匹配时,将返回-1
- split,把字符串分割为字符串数组。
预定义特殊字符
- \n 换行符
- \r 回车符
- \t 制表符
- \f 换页符(Tab)
- \cX 与X对应的控制字符
- \b 退格符(BackSpace)
- \v 垂直制表符
- \0 空字符(“”)
预定义类
- . 等同于IE下[^\n],其它[^\n\r], 匹配除换行符之外的任何一个字符
- \d等同于[0-9], 匹配数字
- \D等同于[^0-9], 匹配非数字字符
- \s等同于[ \n\r\t\f\x0B], 匹配一个空白字符
- \S等同于[^ \n\r\t\f\x0B], 匹配一个非空白字符
- \w等同于[a-zA-Z0-9_], 匹配字母数字和下划线
- \W等同于[^a-zA-Z0-9_],匹配除字母数字下划线之外的字符
量词
下表量词单个出现时皆是贪婪量词
- 匹配前面的子表达式零次或多次。例如,zo 能匹配 “z” 以及 “zoo”。 等价于{0,}。
- 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
- ? 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。
- {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
- {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。
- {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, “o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。
贪婪量词与惰性量词
- 用贪婪量词进行匹配时,它首先会将整会字符串当成一个匹配,如果匹配的话就退出,如果不匹配,就截去最后一个字符进行匹配,如果不匹配,继续将最后一个字符截去进行匹配,直到有匹配为止。直到现在我们遇到的量词都是贪婪量词
- 用惰性量词进行匹配时,它首先将第一个字符当成一个匹配,如果成功则退出,如果失败,则测试前两个字符,依些增加,直到遇到合适的匹配为止
- 惰性量词仅仅在贪婪量词后面加个”?”而已,如”a+”是贪婪匹配的,”a+?”则是惰性的
- var str = “abc”;
- var re = /\w+/;//将匹配abc
- re = /\w+?/;//将匹配a