正则表达式 RegExp
正则表达式 RegExp
其实与 perl类似,亦即和 php 中的正则类似
两种方式创建正则表达式式
1.用字面量
[var] 正则变量名 = "/正则字符串/[flag]"
如下:
var patern = "/js/img";
2.用 RegExp 构造函数
[var] 正则变量名 = new RegExp("正则字符串", "flag")
var ppttern2 = new RegExp("js", "img")
注意:转义时,字面量的与构造的区别,如为了表示 "/",字面量写面"\/",构造中的
字符得写成 "\\/"形式
原字符串.replace(正则表达式字符串,用于替换的字符串);
注意:此方法名只用用双引号,不能用“/”,与 exec(),test()不同
如:
var pattern = "lin";
var str = "lin3615";
var strs = str.replace(pattern, "ok");
alert(strs);
此时的 模式一定是如构造中的正则字符串,不加上分隔符号,在引号里面的全部当
做正则字符串的,如上例,不能写成 var pattern = "/lin/"
两个主要方法 exec(), test()
注意:正则表达式不能在两边用双引号,与replace不同
exec():接受一个参数,即要应用的字符串,然后返回包含第一个匹配项的信息的数
组,或者在没有匹配项的情况下返回 null。返回的数据虽然是 Array 实例,但包
含两个额外实例:index,input,其中,index 表示匹配字符串的位置,input 表示应
用于正则表达式的字符串,一定要有正则匹配才行,不然会出错。数组第一项是整个
模式匹配的字符串,其它项则是与模式中捕获组匹配的字符串(如果没有捕获组,则
只有一项)
var str = "linyuanlong";
var pattern = /yuan/;
var pattern2 = /yuanx/;
var arr = pattern.exec(str);
var arr2 = pattern2.exec(str);
alert(arr.index); // 3
alert(arr2); // null
====================================================
var text = "mon and dad and baby";
var pattern = /mon( and dad( and baby)?)?/gi;
var str = pattern.exec(text);
// alert(str[0]); // mon and dad and baby
//alert(str[1]); // and dad and baby
//alert(str[2]); // and bady
此时,如果在正则中没有设置 g 时,则返回一直是第一个匹配项,而设置了 g 时,
再次调用时,则一直会向下匹配:
var text = "cat, bat, fat";
var pattern = /.at/;
var s = pattern.exec(text);
var ss = pattern.exec(text);
alert(s); // cat
alert(ss); // cat
=======================================
var text = "mon and dad and baby lin ok yes";
var pattern = new RegExp("mon (and dad( and baby)?)?( lin (ok yes)?)?");
var str = pattern.exec(text);
document.write("str[0]: "+str[0] + "<br />");
document.write("str[1]: "+str[1] + "<br />");
document.write("str[2]: "+str[2] + "<br />");
document.write("str[3]: "+str[3] + "<br />");
document.write("str[4]: "+str[4] + "<br />");
document.write("str[5]: "+str[5] + "<br />");
str[0]: mon and dad and baby lin ok yes
str[1]: and dad and baby
str[2]: and baby
str[3]: lin ok yes
str[4]: ok yes
str[5]: undefined
===========================
var text = "cat, bat, fat";
var pattern = /.at/g;
var s = pattern.exec(text);
var ss = pattern.exec(text);
alert(s); // cat
alert(ss); // bat
test():用于测试是否与指定的模式匹配,如果是则返回 true,否则为 false
var text = "cat, bat, fat";
var pattern = /.at/;
var s = pattern.test(text);
alert(s); // true