正则表达式由两个部分组成:1
/正则表达式主体/修饰符(可选)
其中修饰符主要用到两种:
i
: ignore 的意思。表示忽略大小写进行匹配。g
: global 的意思。表示匹配整个字符串,否则第一次匹配成功后,不会继续匹配后面的字符串。
特殊字符 | 含义 |
---|---|
* |
0个或者 N 个 |
+ |
1个或者 N 个 |
? |
0个或者1个 |
. 等价 [^\n\r] |
匹配任意字符(除了换行和回车) |
\ |
可以做转义字符 也可以和 \b 等一起使用表示特殊含义 |
^ |
匹配输入的开始 如 /^A/ 匹配一个以字符A 开头的字符串 |
$ |
匹配输入的结束 如 /t$/ 匹配一个以字符t 结尾的字符串 |
[0-9] |
匹配一个数字 |
\d |
同上匹配一个数字 |
\s |
空白字符(空格、制表符、换行符等) |
\D 等价 [^0-9] |
匹配一个非数字字符 |
[a-zA-Z] |
匹配任何一个大小写字母 |
\w |
匹配一个单字字符(字符、数字、下划线) |
\W |
同上匹配一个非单字字符 |
[^xyz] |
匹配不包含xyz字符 的第一个字符 |
使用正则表达式的常用方法
方法 | 描述 |
---|---|
replace() |
查找匹配的字符串,然后用新字符串替代 |
split() |
将原字符串按照正则表达式拆分,将结果存入到一个数组中 |
使用括号的子字符串匹配
- 这种情况下,会将匹配的结果存入到一个数组中,也就是会 记忆 匹配得到的结果。
几个例子
- eg1
1 | var re = /\w+\s/g; |
输出结果1
["fee+空格", "fi+空格", "fo+空格"]
eg2(综合性实例)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23// names中不同名字之间有多个空白字符、制表符等不可见字符
var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
console.log("===========original string==============\n" + names);
var pattern = /\s*;\s*/;
var namelist = names.split(pattern);
// console.log(namelist);
// 将匹配到的结果存起来作为$1和$2
var newpattern = /(\w+)\s+(\w+)/;
newnamelist = [];
for (var i = 0, len = namelist.length; i < len; i++) {
// 名字颠倒
newnamelist[i] = namelist[i].replace(newpattern, "$2, $1");
}
console.log(newnamelist);
// 按照字母表排序
newnamelist.sort();
console.log(newnamelist);需要注意的就是函数
split()
和replace()
的使用。- 如果是带有括号的,那么匹配的结果将存放在
$1
$2
…$n
中