JavaScript通过RegExp类型来支持正则表达式,语法格式如下:
var reg = / pattern / falgs;
正则表达式的匹配模式支持下列3个标志:
1)g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
2)i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
3)m:表示多行模式(multiline),即在到达一行文本末尾时还会继续查找下一行中是否存在于模式匹配的项;
因此,一个正则表达式就是一个模式与上述3个标志的组合体.
正则表达式对象的方法:
•test():返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。
•exec():该方法是专门为捕获组而设计的,接受一个要应用模式的字符串,并返回包含第一个匹配项信息的数组,在没有匹配项时返回null;返回的数组包含两个额外的属性:index和input,index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。
•compile():把正则表达式编译为内部格式,从而执行得更快。
String对象一些和正则表达式相关的方法:
•match():找到一个或多个正则表达式的匹配,找不到则返回null.
•replace():替换与正则表达式匹配的子串.
•search():检索与正则表达式相匹配的值.
•split():把字符串分割为字符串数组.
当search方法没有找到匹配时,将返回-1,类似于exec方法,String对象的match方法也用于将字符串与正则表达式进行匹配并返回结果数组
常用的正则表达式:
1.合法的变量名
/^[_a-zA-Z][_a-zA-Z0-9]*$/g
使用元字符注意事项:元字符是正则表达式的一部分,当我们要匹配正则表达式本身时,必须对这些元字符转义.下面是正则表达式用到的所有元字符:
( [ { \ ^ $ | ) ? * + .] }
预定义的特殊字符
字符 |
正则 |
描述 |
---|
\t |
/\t/ |
制表符 |
\n |
/\n/ |
制表符 |
\r |
/\r/ |
回车符 |
\f |
/\f/ |
换页符 |
\a |
/\a/ |
alert字符 |
\e |
/\e/ |
escape字符 |
\cX |
/\cX/ |
与X相对应的控制字符 |
\b |
/\b/ |
与回退字符 |
\v |
/\v/ |
垂直制表符 |
\0 |
/\0/ |
空字符 |
字符 |
等同于 |
描述 |
---|
. |
[^\n\r] |
除了换行和回车之外的任意字符 |
\d |
[0-9] |
数字字符 |
\D |
[^0-9] |
非数字字符 |
\s |
[ \t\n\x0B\f\r] |
空白字符 |
\S |
[^ \t\n\x0B\f\r] |
非空白字符 |
\w |
[a-zA-Z_0-9] |
单词字符(所有的字母) |
\W |
[^a-zA-Z_0-9] |
非单词字符 |
简单量词
代码 |
类型 |
描述 |
---|
? |
软性量词 |
出现零次或一次 |
* |
软性量词 |
出现零次或多次(任意次) |
+ |
软性量词 |
出现一次或多次(至道一次) |
{n} |
硬性量词 |
对应零次或者n次 |
{n,m} |
软性量词 |
至少出现n次但不超过m次 |
{n,} |
软性量词 |
至少出现n次(+的升级版)
|
边界
边界 |
---|
正则 |
名称 |
描述 |
---|
^ |
开头 |
注意不能紧跟于左中括号的后面 |
$ |
结尾 |
|
\b |
单词边界 |
指[a-zA-Z_0-9]之外的字符 |
\B |
非单词边界 |
|