获取控制
正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的方式。反斜杠后的元字符将失去其特殊含义,反斜杠后为模式修饰符的可选参数。
(1)字符类:单个字符和数字
元字符/元符号 | 匹配情况 |
. | 匹配除换行符外的任意字符 |
[a-z0-9] | 匹配括号中的字符集中的任意字符 |
[^a-z0-9] | 匹配任意不在括号中的字符集中的字符 |
\d | 匹配数字 |
\D | 匹配非数字,同[^0-9]相同 |
\w | 匹配字母和数字及_ |
\W | 匹配非字母和数字及_ |
var pattern = /g..gle/; //.匹配一个任意字符
var str = 'google';
alert(pattern.test(str)); //返回类型为布尔型,返回值true
var pattern = /g[a-z]*gle/; //[a-z]*表示任意个a-z中的字符
var str = 'google';
alert(pattern.test(str)); //返回结果true
var pattern = /g[^0-9]*gle/; //[^0-9]*表示任意个非0-9的字符
var str = 'g00gle';
alert(pattern.test(str)); //返回结果true
var pattern = /[a-z][A-Z]+/; //[A-Z]+表示A-Z一次或多次
var str = 'google';
alert(pattern.test(str)); //一次都没有匹配到A-Z中任意字符,返回结果false
var pattern = /g\w*gle/; //\w*匹配任意多个所有字母数字_
var str = 'google';
alert(pattern.test(str)); //返回结果true
var pattern = /go\d*ogle/; //\d*匹配任意多个数字
var str = 'go666ogle';
alert(pattern.test(str)); //返回结果true,注意//存在空格会返回false
var pattern = /\D{7,}/; //\D{7,}匹配至少7个非数字
var str = 'satisfaction12';
alert(pattern.test(str)); //12个字母,返回结果true
(2)字符类:重复字符
元字符/元符号 | 匹配情况 |
x? | 匹配0个或1个x |
x* | 匹配0个或任意多个x |
x+ | 匹配至少一个x |
(xyz)+ | 匹配至少一个(xyz) |
x{m,n} | 匹配最少m个、最多n个x |
var pattern = /go?gle/; //匹配0个或1个o
var str = 'google';
alert(pattern.test(str)); //返回值为布尔值,返回结果false
var pattern = /go*gle/; //匹配0个一个或多个的o
var str = 'google';
alert(pattern.test(str)); //返回值为布尔值,返回结果true
var pattern = /go+gle/; //匹配至少一个o
var str = 'google';
alert(pattern.test(str)); //返回值为布尔值,返回结果true
var pattern = /(goo)gle/; //匹配至少一个(goo)
var str = 'googoogoogoogle';
alert(pattern.test(str)); //返回值为布尔值,返回结果true
var pattern = /go{2,5}gle/; //匹配最少2个、最多5个o
var str = 'gogle';
alert(pattern.test(str)); //返回值为布尔值,返回结果fasleasle
(3)字符类:锚字符
元字符/元符号 | 匹配情况 |
^ | 行首匹配 |
$ | 行尾匹配 |
\A | 只有匹配字符串开始处 |
\b | 匹配单词边界,词在[]内时无效 |
\B | 匹配非单词边界 |
\G | 匹配当前搜索的开始位置 |
\Z | 匹配字符串结束处或行尾 |
\z | 只匹配字符串结束处 |
var pattern = /^google$/; //^从开头匹配,$从结尾开始匹配
var str = 'google';
alert(pattern.test(str));
(4)字符类:空白字符
元字符/元符号 | 匹配情况 |
\0 | 匹配null字符 |
\b | 匹配边界 |
\f | 匹配进纸字符 |
\n | 匹配换行符 |
\r | 匹配回车字符 |
\t | 匹配制表符 |
\s | 匹配空白字符、空格、制表符和换行符 |
\S | 匹配非空白字符 |
var pattern = /goo\sgle/; //\s可以匹配到空格
var str = 'goo gle';
alert(pattern.test(str));
var pattern = /google\b/; //\b可以匹配是否到了边界
var str = 'google';
alert(pattern.test(str)); // /b只能放在开头结尾处
(5)字符类:替代字符
元字符/元符号 | 匹配情况 |
a|b|c | 匹配a或b或c中任意一个 |
var pattern = /google|baidu|bing/; //匹配三种其中一种字符串
var str = 'google';
alert(pattern.test(str)); //返回结果true
(6)字符类:记录字符
元字符/元符号 | 匹配情况 |
(string) | 用于反向引用的分组 |
\1或$1 | 匹配第一个分组中的内容 |
\2或$2 | 匹配第二个分组中的内容 |
\3或$3 | 匹配第三个分组中的内容 |
var pattern = /(google){2,4}/; //匹配分组里的字符串2-4次
var str = 'googlegoogle';
alert(pattern.test(str)); //返回结果true
var pattern = /8(.*)8/; //获取8..8之间的任意字符
var str = 'This is 8google8';
str.match(pattern);
alert(RegExp.$1); //得到第一个分组里的字符串内容
var pattern = /8(.*)8/;
var str = 'This is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>'); //得到替换的字符串输出
document.write(result); //所替换的字符加粗了
var pattern = /(.*)\s(.*)/;
var str = 'google baidu';
var result = str.replace(pattern, '$2 $1'); //将两个分组的值替换输出
document.write(result);