正则表达式基础
正则表达式简写为RegExp,定义方式为: var patt1=new RegExp("e");
1.正则对象有3个方法:test()、exec()、compile()。
test()方法检索字符串中的指定值,返回true或false:
var patt1=new RegExp("e");
document.write(patt1.test("The best thing in life are free."));//true
exec()方法检索字符串中的指定值,返回值是被找到的值,如果没有发现匹配,则返回null;
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life is free."));//e
在RegExp对象添加第二个参数"g"时,可以搜索匹配模式的所有存在信息。
var patt1=new RegExp("e","g");
do{
result1=patt1.exec("The best thing in life are free.");
document.write(result);
}
while(result!=null) //eeeeeenull
compile()方法用于改变RegExp,既可以改变搜索模式,也可以添加或者删除第二个参数。
var patt1=new RegExp("e");
document.write(patt1.test("The best thing in life are free."));
patt1.compile('d');
document.write(patt1.test("The best thing in life are free.")); //truefalse
2.修饰符
i:执行对大小写不敏感的匹配;new RegExp('regexp','i');
g:执行全局匹配;new RegExp('regexp','g')
m:执行多行匹配。
3.方括号的用法
[abc]:查找方括号之间的任何字符;
[^abc]:查找任何不在方括号之间的字符;
[0-9]:查找0到9的数字;
[a-z]:查找小写a 到 z的字符;
[A-Z]:查找大写A 到Z的字符;
4.元字符,是拥有特殊含义的字符
.:查找单个字符,除了换行和行结束符;
\w:单词字符;
\W:非单词字符;
\d:数字字符;
\D:非数字字符;
\s:空白字符;
\S:非空白字符;
\b:匹配单词边界;//大小写字母、数字、下划线为可以组成单词的字符,这些字符和其他字符相邻则为单词边界。
\B:匹配非单词边界;
\0:查找NUL字符;
\n:查找换行符;
\f:换页符;
\r:回车符;
\t:制表符;
\v:垂直制表符;
\xxx:以八进制xxx规定的字符
\xdd:以十六进制dd规定的字符
\uxxxx:以十六进制xxxx规定的Unicode字符。
5.量词
‘^’和‘$’
两个特殊符号‘^’和‘$’,表示一个字符串的开始和结束。
"^apple$":表示由apple开始和结束的字符串。
"apple":表示任何包含apple的字符串。
*,+,?:这三个符号表示一个或一个序列字符重复出现的次数:
* :表示没有或者更多。/"ab*"表示一个字符串中有一个a后面跟着零个或者若干个b('a''ab''abb'......)
+:表示一次或者更多。/'ab+'表示一个字符串有一个a后面跟着至少一个b。
?:表示没有或者一次。/'ab?'表示一个字符串有一个a后面跟着零个或者一个b。
"a?b+$"表示字符串的末尾有零个或者一个a跟着一个或者若干个b。
?=n:匹配任何其后紧接字符串n的字符串;
?!n:匹配任何其后没有紧接字符串n的字符串。
使用{}可以具体表示重复次数:
'ab{2}'表示a后两个b;
'ab{2,}'表示a后至少两个b;//不能是'ab{,2}'
'ab{3,5}'表示a后3到5个b;
在正则表达式里面,或用'|'表示:
'a|b':表示字符串中有'a'或者'b';
'(a|b)*c':"a""b"混合的字符串后面有一个c;
' . '用来替代任何字符:
'a.[0-9]':表示一个字符串有一个a后面跟着一个任意字符和一个数字。
'^a.{3}$':表示一个a开头后面跟了3个任意字符的字符串(长度为4个字符);
[]用于表示某些字符允许在一个字符串中的某一个特定位置出现。
'[ab]':表示一个字符串中有一个a或b,同'a|b';
'[a-b]':表示一个字符串中有小写的a到b中的一个;
'[abcd]':表示一个字符串中一个a或b或c或d,同"a|b|c|d";
在[]里面,'^'表示不希望出现的字符,应放在最前面:
%[^a-zA-Z]%:百分号里面不出现字母。
'^.$()|*_?{\'这些字符前需要加上转义字符"\",在[]里面时,不用加转义字符。
6.支持正则表达式的String对象的方法
search:检索与正则表达式相匹配的值。/stringObject.search(regexp);对大小写敏感,不匹配返回-1,忽略g,总是返回第一个匹配的位置。
match:找到一个或多个正则表达式的匹配;/stringObject.match();返回字符串值,需要有全局标志g。
replace:替换与正则表达式匹配的字符串;/stringObject.replace();参考http://www.w3school.com.cn/jsref/jsref_replace.asp
split:把字符串分割为字符串数组。/参考http://www.w3school.com.cn/jsref/jsref_split.asp