一、RegExp对象。
1.创建RegExp对象的方法有两种,
一是通过构造函数来创建:new RegExp(“pattern”[,”flags”]),patern为一个字符串,书写时必须用引号引起来。参数flags也是一个字符串,在书写时也要用引号引起来。Flags标记可以是以下标志的某一个或某几个的组合:g,全局标志;i,忽略大小写标志;m,多行查找标志;
二是直接定义正则表达式文本模式来隐式构造RegExp对象,基本语法格式为:/pattern/flags,要注意的是,在这种方法中,pattern和flags都是纯文本格式的,不能用引号引起来,而pattern部分要嵌套在两个正斜杠“/”之间。
2.RegExp对象提供的方法:三种:test(str);exec(str);compile(“pattern”[,”flags”])。
(1).test(str) 方法:返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。
格式:rgexp.test(str)
示例:
function TestDemo(re, s){ var s1; // 声明变量。 // 检查字符串是否存在正则表达式。 if (re.test(s)) // 测试是否存在。 s1 = " contains "; // s 包含模式。 else s1 = " does not contain "; // s 不包含模式。 return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。 } alert(TestDemo(/io/,"The rain in Spain falls mainly in the plain.")); //输出:'The rain in Spain falls mainly in the plain.' does not contain 'io' alert(TestDemo(/in/,"The rain in Spain falls mainly in the plain.")); //输出:'The rain in Spain falls mainly in the plain.' contains 'in‘
(2).
二、String对象。
1.String对象主要有4种方法:
(1).match(reg):返回null或以搜索结果为元素的数组。这种方法与RegExp对象的exec方法很类似,exec方法的参数是string对象的实例,即一个字符串,两种方法的主宾对象正好互换了。注意:match方法的返回数组有两种存储方式,若没有设置全局标志g,数组的第一个元素存放整个匹配字符串,而其他元素按顺序存放各个子匹配结果,这时和exec方法的数组的存储情况相同;若设置了全局标志g,数组按顺序存放所有匹配成功的完整的字符串;
示例:
function MatchDemo(){ var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/i; // 创建正则表达式模式。 r = s.match(re); // 尝试匹配搜索字符串。 return(r); // 返回第一次出现 "ain" 的地方。 } alert(MatchDemo().input);//输出:The rain in Spain falls mainly in the plain alert(MatchDemo().index);//输出:5
(2).search(reg):该方法用于在调用该方法的string对象的实例中查找首次与“reg”正则表达式模式匹配的字符串,并返回其首字符的位置,若匹配不成功则返回-1;
格式:stringObj.search(rgExp)
示例:
function SearchDemo(){ var r, re; // 声明变量。 var s = "The falls mainly in the plain."; re = /falls/i; // 创建正则表达式模式。 r = s.search(re); // 查找字符串。 return(r); // 返回 Boolean 结果。 } alert(MatchDemo()); //输出:4
(3).replace(reg,str):若没有设置全局标志g,只检索和替换首次匹配成功的字符串。否则,将检索和替换目标字符串中所有与reg模式匹配的子字符串。返回根据正则表达式进行文字替换后的字符串的复制;
格式:stringObj.replace(rgExp, replaceText)
示例:
function ReplaceDemo(){ var r, re; // 声明变量。 var ss = "The man hit the ball with the bat."; //模式一 //re = /The/gi; // 创建正则表达式模式。 //r = ss.replace(re, "A"); // 用 "A" 替换 "The"。 //模式二 re = /(/S+)(/s+)(/S+)/g; // 创建正则表达式模式。 r = ss.replace(re, "$3$2$1"); // 交换每一对单词。 return(r); // 返回结果字符串。 } alert(ReplaceDemo()); //模式一输出:A man hit A ball with A bat. //模式二输出:man The the hit with ball bat. the
(4).split([separator[,limit]]):参数separator可以是字符串或正则表达式对象,它是一个可选项,如果忽略该参数,将返回包含整个字符串的单一元素数组。Limit也是一个可选项,该值用来限制返回数组中的元素个数。结果存放在一个字符串数组并返回。
格式:stringObj.split([separator[, limit]])
示例:
function SplitDemo(){ var s, ss; var s = "The rain in Spain falls mainly in the plain."; // 在每个空格字符处进行分解。 ss = s.split(" "); return(ss); } alert(SplitDemo().join());//输出:The,rain,in,Spain,falls,mainly,in,the,plain.