RegExp模式概念:
当你需要在一个目标字符串中,检索或操作一种类型的子字符串(该类型用RegExp来描述,包括了抽象,数量,位置和逻辑组合构成),那么就需要使用RegExp对象。
一、RegExp对象的组成:
RegExp对象由字符模式和搜索范围组成。
字符串模式的类型:
(1). 字符和模式:字符串长度确定的模式(包括确定的字符串和模糊匹配的字符)"%d%d/%d%d/%d%d%d%d", “Jackson”,本身就是表达了与的关系。
(2).自定义组合逻辑或非:字符串模式中任意一个都遍历目标串的模式([], (),逻辑与或|, ^非),[AEIOUaeiou]匹配元音,“([a-z][A-Z][0-9])+”()是将几个或组合在一起匹配aB0。”[to|too|2]”;^在[]内为非,否则为定位符号;与可以用或来表达/[^\w\s]/g。
(3). 数量:字符模式个数的修饰,+,-,*,?,{n}元符号;“fo+”与football匹配。
(4). 位置:字符串模式位置的修饰,^,$,\b, \B;”ar$”和car匹配。
(5). 转义符号\, “Th\*”与Th*匹配,常规模式在字符串中也要”\\s”,前面的\也是转义字符。
搜索范围有i, g, m:
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
二、RegExp对象的获得:
RegExp对象可以用:var p1 =newRegExp("[^xyz]", "g")获得,或直接用var p1=/[^xyz]/g获得。
三、RegExp对象的使用:
RegExp对象可以在RegExp对象方法:test,exec,compile;string对象search,match,replace,split方法中使用。
RegExp中使用正则表达式:
test() 方法检索字符串中的指定值。返回值是 true 或 false。
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
compile() 方法用于改变 RegExp。也可以添加或删除第二个参数。
在使用 "g" 参数时,exec()的工作原理如下:
找到第一个"e",并存储其位置
如果再次运行 exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置。
例子1:
<html>
<head>
function testRE()
{
varpatt1=new RegExp("e");
document.write(patt1.exec("Thebestthings in life are free"));
varpatt1=newRegExp("e","g");
do
{
result=patt1.exec("Thebest things inlife are free");
document.write(‘\n’);
document.write(result);//第一次eeeeee
}
while(result!=null);
}
</head>
<body onload = testRE()>
</body>
<html>
由于这个字符串中 6 个 "e" 字母,代码的输出将是:
ee e e e e e null 7
string中使用正则表达式:
例子2:
<html>
<head>
<script>
οnerrοr=handleErr;// 错误的调试
functionhandleErr(msg,url,l)
{
txt="本页中存在错误。\n\n"
txt+="错误:" + msg +"\n"
txt+="URL:" + url + "\n"
txt+="行:" + l +"\n\n"
txt+="点击“确定”继续。\n\n"
alert(txt)
returntrue
}
function testE(valueStr)
{
varstr = valueStr;//arguments[0];
varstrResult = str.replace(/[^\w\s]/g,'0');// 非单词且非空白字符用0代替
document.write(strResult);
}
</script>
</head>
<body onload = "testE('Give100%!')"> // 带有参数的js函数调用需要""号修饰(若不修饰,则只能是无参函数)
</body>
</html>
更多的模式规则访问:
http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
参考:
http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
http://www.php100.com/html/webkaifa/javascript/2010/0803/5130.html