日期:2014-05-16 浏览次数:20318 次
正则表达式
1.var re = new RegExp("cat","g");
2.var re = /cat/gi;
注:i——忽略大小写;g——全局匹配;m——匹配多行
?
RegExp的方法
1.test()——找到匹配返回true,否则返回false
? ?var s = "aacat";
? ?var re = /cat/;
? ?alert(re.test(s)); ?//返回true
2.exec()——在字符串中搜索,并把匹配结果用一个数组返回
? ?var s = "a bat, a cat, aa";
? ?var re = /at/;
? ?var r = re.exec(s); ?//只返回第一个at
?
String的方法
1.match()——类似于exec,返回存放匹配结果的整个数组
2.search()——返回匹配项在字符串中的位置索引,没有返回-1
3.replace()——将匹配替换成指定字符串
? ?var dt = '12-01-2007';
? ?dt.replace(/^(\d{2})-(\d{2})-(\d{4})^/,'$3$2$1'); ?//返回20070112
注:replace的第二个参数可以是函数,该函数可以接受一个参数,该参数是匹配了前面正则的文本
4.split()——将字符串分割成一系列字串并通过一个数组将他们返回
? ?var s = "red,blue,yellow,green";
? ?var re = /\,/;
? ?var a = s.split(re);
注:后两个是扩展字符串的常用方法
?
元字符
()[{\^$|)?*+. ?需要用\来转义
?
字符类
1.简单类 /bac/
2.负向类 /[^ac]/
3.范围类 /[a-v]/
注:JavaScript不支持联合类和交叉类,如[a-m[p-z]] [a-m[^b-e]]
?
预定义类
. [^\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次
?
贪婪的、惰性的和支配性的量词
1.贪婪量词——先看整个字符串是否匹配。如果没有匹配,则去掉字符串的最后一个字符,并再次尝试匹配。直到发现一个匹配,或者字符串不剩任何字符。
——所有量词自身都是贪婪的 ?
2.惰性匹配——先看字符串中第一个字符是否匹配,如果不匹配则在读入下一个字符。直到发现一个匹配或者整个字符串都没有匹配
——所有量词后面加上?是惰性的 ??
3.支配量词——只尝试匹配整个字符串,若不匹配则不再尝试。
——所有量词后面加上+是支配性的 ?+
?
例子:
var s = "abbbaabbbaaabbb1234";
var r1 = /.*bbb/g;
var r2 = /."?bbb/g;
var r3 = /.*+bbb/g;
注:惰性量词的工作方式和贪婪相反;很多浏览器不支持支配量词。
?