一、正则表达式的作用
正则表达式的作用:
1) 检查字符串是否符合规则
2) 将字符串中符合规则的内容提取出来。
二、创建正则表达式
+++ 创建正则表达式
使用RegExp创建正则表达式
var reg=new RegExp("正则表达式","匹配模式");
使用字面量创建正则表达式
var reg=/正则表达式/匹配模式
+++ 正则表达式的匹配模式
i 忽略大小写
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配
注意:可以为一个表达式设置多个匹配模式。顺序无所谓。
var reg=/abc/ig
var reg=/abc/gi
2.1 创建正则表达式
1)使用RegExp创建正则表达式
//创建正则表达式
var reg=new RegExp("a");
console.log(reg.test("你好!小a")); //true
//创建正则表达式,带有匹配模式
var reg2=new RegExp("A","i");
console.log(reg2.test("你好!小a")); //true
2) 使用字面量创建正则表达式
//创建正则表达式
var reg=/a/;
console.log(reg.test("你好!小a")); //true
//创建正则表达式,带有匹配模式
var reg2=/A/i;
console.log(reg2.test("你好!小a")); //true
2.2 正则表达式的匹配模式
i 忽略大小写
var reg=/reg/i;
var reg=new RegExp("a","i");
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
var reg=/reg/g;
var reg=new RegExp("a","g");
m 执行多行匹配(很少用这个!!!)
注意:可以为一个表达式设置多个匹配模式。顺序无所谓。
var reg=/abc/ig
var reg=/abc/gi
1) i 忽略大小写
var str="eweAdfdfB 32323ewe wew ";
//检测字符串是否含有ad子串
var reg=/ad/;
console.log(reg.test(str)) //false
//检测字符串是否含有ad子串,忽略大小写
var reg=/ad/i;
console.log(reg.test(str)) //true
2) g 执行全局匹配
var str="eweadfdad 32323ewe wew ";
//替换字符串中的ad子串。 替换一个停止
var reg=/ad/;
var newStr=str.replace(reg,'hlp');
console.log(newStr)
//替换字符串中的ad子串。 全局替换。
var reg=/ad/g;
var newStr=str.replace(reg,'hlp');
console.log(newStr)
3)注意:可以为一个表达式设置多个匹配模式。顺序无所谓
var str="eweadfdaD 32323ewe wew ";
//替换字符串中的ad子串。 完全替换。 忽略大小写
var reg=/ad/ig;
var newStr=str.replace(reg,'hlp');
console.log(newStr)
三、正则表达式常用方法
test()
检查字符串中是否有符合规则(正则表达式规则)的子串。符合返回true,否则false。
exec()
获取字符串中有符合正则表达式规则的子串,默认返回一个数组。
3.1 test() 检查字符串中是否有符合规则的子串
>>>>>> 检测字符串是否有a 子串
var s="a";
console.log(s.test(/a/)) //true
s="absdsdsd"
console.log(s.test(/a/)) //true
s="eweewewew"
console.log(s.test(/a/)) //false
>>>>>> 检测字符串是否有ab子串,忽略大小写
var s="212aBwewewe";
//检测字符串中是否有 ab 子串 。由于不匹配,所以false
console.log(s.test(/ab/)) //false
//检测字符串中是否有 ab 子串 。忽略大小写,所以true
console.log(s.test(/ab/i)) //true
3.2 exec() 获取字符串中符合规则的子串
>>>>>> 查找字符串中相符的字符串
var str="da jia hao hao xue xi a";
var reg=/\b[A-Z]{3}\b/ig; //忽略大小写
var line=reg.exec(str)
alert(line)// jia
>>>>>> 查找字符串中所有相符的字符串
<body>
</body>
<script type="text/javascript">
var str="da jia hao hao xue xi a";
var reg=/\b[A-Z]{3}\b/ig; //忽略大小写
var line="";
while((line=reg.exec(str))!=null){
document.write(line)
document.write("<br/>")
}
</script>
四、正则表达式语法
4.1 或
| 表示或的意思
>>>>>> 检测字符串是否含有a或b子串
var str="abcd";
//检测字符串中是否含有a子串
var reg=/a/;
console.log(reg.test(str)); //true
//检测字符串中是否含有a子串或b子串,
var reg=/a|b/;
console.log(reg.test(str)); //true
>>>>>> 检测字符串是否含有ab或qww子串
var str="ab212cd";
//检测字符串中是否含有ab子串
var reg=/ab/;
console.log(reg.test(str)); //true
//检测字符串中是否含有ab子串或qww子串,
var reg=/ab|qww/;
console.log(reg.test(str)); //true
4.2 方括号
[ ] 方括号用于查询某个范围内的字符
方括号里的内容也是或的意思。
[^ ] 除了方括号里面的字符
[abc] 表示a、b、c中的任意字符。等价于 a|b|c
[^abc] 除了a、b、c中的任意字符
[a-z] 表示任意小写字母
[A-Z] 表示任意大写字母
[A-z] 表示任意字母
[0-9] 表示0-9任意数字
[4-9] 表示4-9任意数字
[0-9a-zA-Z] 表示可以是数字或英文字母中的任意字符
(ab|bc|cd) 表示ab、bc、cd中的任意字符串
>>>>>> 检查一个字符串是否含有a或b或c
//创建正则表达式
var reg=/a|b|c/;
console.log(reg.test("a21323")); //true
console.log(reg.test("21b323")); //true
console.log(reg.test("21c323")); //true
console.log(reg.test("2332323te")); //false
var reg='[abc]';
//检查字符串中是否含有a或b或c
console.log(reg.test("rewe")); //false
//检查字符串中是否含有a或b或c
console.log(reg.test("a434d"));//true
>>>>>> 检查一个字符串是否含有abc或adc或aec
var str="我是abc你aw";
var reg=/abc|adc|aec/;
console.log(reg.test(str))
var str="我是abc你aw";
var reg=/a[bcd]c/;
console.log(reg.test(str))
>>>>>> [ ]
检查字符串是否含有数字
//检查字符串是否含有数字
var reg=/[0-9]/
console.log(reg.test("dewwewe3")); //true
console.log(reg.test("dewwewe")); //false
检查字符串是否含有4-9数字
//检查字符串是否含有4-9数字
var reg=/[4-9]/
console.log(reg.test("dewwewe3")); //false
console.log(reg.test("dewwewe7")); //true
检查字符串是否含小写字母
//检查字符串是否含小写字母
var reg=/[a-z]/
console.log(reg.test("1213232323")); //false
console.log(reg.test("121212a")); //true
检查字符串是否含大写字母
//检查字符串是否含大写字母
var reg=/[A-Z]/
console.log(reg.test("1213232323")); //false
console.log(reg.test("121212a")); //false
console.log(reg.test("121212A")); //true
检查字符串是否含字母
//检查字符串是否含字母
var reg=/[A-z]/
console.log(reg.test("1213232323")); //false
console.log(reg.test("121212a")); //true
console.log(reg.test("121212A")); //true
>>>>>> [ ] 混合
检测字符串中是否有数字或大写的英文字母
//检测字符串中是否有数字或大写的英文字母
var reg=/[0-9A-Z]/;
console.log(reg.test("ewe")) //false
console.log(reg.test("123232dwew")) //true
检测字符串中是否有数字或英文字母
//检测字符串中是否有数字或英文字母
var reg=/[0-9A-Za-z]/;
console.log(reg.test("ewe")) //true
console.log(reg.test("123232dwew")) //true
>>>>>> [ ^ ] 除了
[ ^ ] 检查字符串是否含有除了中括号内的字符
var reg=/[^ab]/
console.log(reg.test("a")); //false
console.log(reg.test("b")); //false
console.log(reg.test("ab")); //false
console.log(reg.test("ab12")); //true
4.3 量词
量词:
1) 通过量词可以设置一个元素出现的次数。
2) 量词只对它前面的一个内容起作用。
量词语法:
{m} 出现m次
{m,n} 出现m到n次
{m,} 出现m次以上
+ 至少出现1次,相当于{1,}
* 出现0或多次,相当于{0,}
? 出现0次或1次。相当于{0,1}
例子:
出现m次:
ab{3}c
(ab){3}c
出现m到n次
ab{1,3}c
出现m次以上
ab{3,}
1) 量词要点
>>>>>>> 通过量词可以设置一个元素出现的次数
var reg=/aaa/
//检测字符串是否含有 aaa 的子串
console.log(reg.test("aabcccc"));//false
//检测字符串是否含有 aaa 的子串
console.log(reg.test("aaabcccc"));//true
//等价于/aaa/
var reg=/a{3}/
//检测字符串是否含有 aaa 的子串
console.log(reg.test("aabcccc"));//false
//检测字符串是否含有 aaa 的子串
console.log(reg.test("aaabcccc"));//true
>>>>>>> 量词只对它前面的一个内容起作用
//相当于 /abbb/
var reg=/ab{3}/
//相当于 /ababab/
var reg2=/(ab){3}/
2) 量词语法
>>>>>> {m} 出现m次
//相当于 /acbbb/
var reg=/acb{3}/
//相当于 /acbacbacb/
var reg=/(acb){3}/
>>>>>> {m,} 出现m次以上
//相当于a出现3次以上
var reg=/a{3,}/
console.log(reg.test("abcaa")); //false
console.log(reg.test("abcaaa")); //true
>>>>>> {m,n} 出现m到n次
//相当于a出现1次到3次
var reg=/a{1,3}/
console.log(reg.test("bcd")); //false
console.log(reg.test("abcd")); //true
console.log(reg.test("aaaabcd")); //true
>>>>>> + 至少出现1次
//相当于a至少出现一次
var reg=/a+/
console.log(reg.test("bcd")); //false
console.log(reg.test("abcd")); //true
console.log(reg.test("aaaaabcd")); //true
>>>>>> * 出现0次或多次
//相当于a出现0次或多次
var reg=/a*/
console.log(reg.test("bcd")); //true
console.log(reg.test("abcd")); //true
console.log(reg.test("aaaaabcd")); //true
>>>>>> ? 出现0次或1次
//相当于a出现0次或一次
var reg=/a?/
console.log(reg.test("bcd")); //true
console.log(reg.test("abcd")); //true
console.log(reg.test("aaaaabcd")); //true
^ 表示开头
/^abc/ 表示以abc开头
& 表示结尾
/abc$/ 表示以abc结尾
/^a$/
4.4 元字符
元字符:
. 代表任意字符
\w 任意数字、字母及下划线。 [0-9A-z_]
\W 除了单词字符。 [^0-9A-z_]
\d 任意数字。 [0-9]
\D 除了数字 [^0-9]
\s 空格。
\S 除了空格。
\b 单词边界。
\B 除了单词边界
所谓的单词边界指的就是单词前后有空格(字符串开头或结尾除外)
我们可以使用空格来代替单词边界查找单词,但是如果单词在开头或结尾的就不行。此时必须使用单词边界。
正则表达式转义:
1) 【使用字面量创建正则表达式】中的转义
在正则表达式中使用\表示转移字符
2) 【使用RegExp对象创建正则表达式】中的转义
在构造函数中使用\\表示转移字符。
原因:使用构造函数创建正则对象时,参数是字符串。
由于正则表达式中的转义字符是 \ , 而字符串中的转义字符也是 \ 。
且字符串转义后的形式就是正则表达式。
在正则表达式中如果要使用\,则在字符串中需要使用\\来双重转义。
字符串:\\. == > 正则: \.
字符串:\\\\ == > 正则: \\
1)元字符要点
>>>>>> . 代表任意字符
//匹配任意字符
var reg=/./
console.log(reg.test("deggf")) //true
console.log(reg.test("#$%^%^%@#@"));//true
//匹配 .
var reg=/\./
console.log(reg.test("#$%^%^%@#@"));//false
console.log(reg.test("#$%^%^%@#@."));//true
>>>>>> \w 与\W (任意数字、字母及下划线)pi
匹配任意字母、数字、下划线
//匹配字母、数字、下划线
var reg=/\w/
console.log(reg.test("deggf")) //true
console.log(reg.test("#$%^%^%@#@"));//false
//匹配字母、数字、下划线
var reg2=new RegExp("\\w");
console.log(reg2.test("deggf")) //true
console.log(reg2.test("#$%^%^%@#@"));//false
匹配除了字母、数字、下划线
//匹配除了字母、数字、下划线的符号
var reg=/\W/
console.log(reg.test("deggf")) //false
console.log(reg.test("#$%^%^%@#@"));//true
>>>>>> \d 与\D (任意数字)
匹配任意数字
//匹配任意数字
var reg=/\d/
console.log(reg.test("deggf")) //false
console.log(reg.test("4derer"));//true
匹配除了数字
//匹配除了数字的字符
var reg=/\D/
console.log(reg.test("deggf")) //true
console.log(reg.test("232323"));//false
//匹配出现三次非字符的子串
var reg=/\D{3}/
console.log(reg.test("deggf")) //true
console.log(reg.test("4de23er"));//false
>>>>>> \s 与\S (空格)
匹配空格
//匹配空格
var reg=/\s/
console.log(reg.test("32 323")) //true
//匹配两个空格
var reg=/\s{2}/
console.log(reg.test("32 323")) //只有一个空格 false
console.log(reg.test("32 323")) //有两个个空格 true
//匹配三个空格
var reg=/\s{3}/
console.log(reg.test("32 323")) //只有一个空格 false
console.log(reg.test("32 323")) //只有两个空格 false
console.log(reg.test("32 323")) //有三个空格 true
匹配非空格
//匹配连续3个非空格的字符
var reg=/\S{3}/
console.log(reg.test(" ")) //false
console.log(reg.test("32 323")) //true
>>>>>> \b 与\B (单词边界)
查找单词
var reg=/\bchild\b/
console.log(reg.test("hello child")) //true
console.log(reg.test("hello child 你好")) //true
console.log(reg.test("hello childc")) //false
我们可以使用空格来代替单词边界查找单词,但是如果单词在开头或结尾的就不行。
var reg=/\sworld\s/;
console.log(reg.test("wqqworld")) //false
console.log(reg.test("wqqworld ss")) //false
console.log(reg.test("wqq world")) //false
console.log(reg.test("wqq world wqq")) //true
2)正则表达式转义
>>>>>> 正则表达式使用 \ 来转义特殊字符
匹配 字符 .
//匹配任意字符
var reg=/./;
console.log(reg.test("232323")) ; //true
console.log(reg.test("2323.23")) ; //true
//匹配字符 .
var reg=/\./;
console.log(reg.test("232323")) ; //false
console.log(reg.test("2323.23")) ; //true
匹配 字符 \
//匹配字符 \
var reg=/\\/;
console.log(reg.test("23232\\3")) ; //true
console.log(reg.test("2323.23")) ; //false
>>>>>> 使用RegExp创建正则表达式,转义 \
字符串转义后的形式就是正则表达式。
如果正则表达式中本身有 \,则在字符串中需要双重转义 \
//匹配字符 .
var reg=new RegExp("\\.")
console.log(reg) // ----> 相当于 reg=\\.\
//匹配字符 .
var reg=new RegExp("\\\\")
console.log(reg) // ----> 相当于 reg=\\\\
使用RegExp创建正则表达式,匹配
//匹配任意字符
var reg=new RegExp(".")
console.log(reg.test("232323")) ; //true
console.log(reg.test("2323.23")) ; //true
//匹配字符 .
var reg=new RegExp("\\.")
console.log(reg) // ----> \\.\
console.log(reg.test("232323")) ; //false
console.log(reg.test("2323.23")) ; //true
//匹配字符 \
var reg=new RegExp("\\\\")
console.log(reg) // ----> \\\\
console.log(reg.test("23232\\3")) ; //true
console.log(reg.test("2323.23")) ; //false
2)通配符. 的用法
1、“.”(点符号)匹配的是除了换行符“\n”以外的所有字符。
2、匹配包括换行符在内的任意字符
[\s\S]*
4.5 边界匹配器
^ 表示开头
$ 表示结尾
/^str$/ 表示字符串必须完全符合正则表达式
a)匹配字符串以a开头
//匹配字符串以a开头
var reg=/^a/
console.log(reg.test("abcd"));//true
console.log(reg.test("abc")); //true
console.log(reg.test("babdss"));//false
b)匹配字符串以a结尾
//匹配字符串以a结尾
var reg=/a$/
console.log(reg.test("abcd"));//false
console.log(reg.test("abc")); //false
console.log(reg.test("babdssa"));//true
console.log(reg.test("babda ssc"));//false
c)匹配字符串以a开头或以b结尾
//匹配字符串以a开头或以b结尾
var reg=/^a|b$/
console.log(reg.test("abcd"));//true
console.log(reg.test("abc")); //true
console.log(reg.test("babdssa"));//false
console.log(reg.test("babdssb"));//true
d)/^str$/ ,表示字符串必须完全匹配
//完全字符串
var reg=/^ab$/
console.log(reg.test("ab")) ; //true
console.log(reg.test("ab ab")) ; //false
console.log(reg.test("a b")) ; //false
e)/^str$/ ,验证字符串是否为手机号
//验证是否为手机号
//13852133975
// 11 为
// 第一位为 1
// 第二位为 3-9 任意数字
// 其余为0-9 任意数字
var phoneReg=/^1[3-9][0-9]{9}$/
console.log(phoneReg.test("13654472825")) ; //true
console.log(phoneReg.test("136544728252323")) ; //false
4.6 正则细节
>>>>>> 正则只要匹配到字符串的一部分就返回true,而不是匹配整个字符串相符才返回true。
var str="121212asd";
var reg=/[0-9]+/;
var b=reg.test(str)
alert(b)// true
>>>>>> 如果正则想匹配整个字符串则要加上边界匹配器
^ 表示字符串的开始
$ 表示字符串的结束
var str="121212asd";
var reg=/^[0-9]+$/;
var b=reg.test(str)
alert(b)// false
常用的正则
验证邮箱:
var reg=/^[a-z0-9]\w+@[a-z0-9]+(\.[a-z0-9]+){1,2}$/ig
四、正则表达式应用
4.1 去除空格
>>>>>> 去除字符串所有空格
var str=prompt("请输入:")
//去除所有空格
var reg=/\s/g
str=str.replace(reg,"");
console.log(str)
>>>>>> 去除字符串首尾空格
var str=prompt("请输入:")
//去除首尾空格
var reg=/^\s+|\s+$/g
str=str.replace(reg,"");
console.log(str)
4.2 邮件的正则
var reg=/^\w+(\.\w+)*@[0-9a-z]+\.[a-z]{2,5}(\.[a-z]{2,5})*$/
console.log(reg.test("554030346@qq.com"));
console.log(reg.test("554030346@qq.com.cn"));
console.log(reg.test("abc.1234@168.com.cn"));
4.3 正则表达式的应用 – 表单验证
>>>>>> 表单的onsubmit事件的应用
表单提交时,会触发onsubmit事件,如果onsubmit事件的方法返回的是true,
那么该表单提交成功,否则失败。
onsubmit绑定函数时,要return该方法
<form action="success.html" method="get" onsubmit="return test()">
onsubmit绑定的方法返回false,点击提交按钮时,提交失败。
<body>
<form action="success.html" method="get" onsubmit="return test()">
<input type="text" name="k"/>
<input type="submit" />
</form>
</body>
<script type="text/javascript">
function test(){
return false;
}
</script>
obsubmit绑定的方法返回true,点击提交按钮时,提交失败。
<body>
<form action="success.html" method="get" onsubmit="return test()">
<input type="text" name="k"/>
<input type="submit" />
</form>
</body>
<script type="text/javascript">
function test(){
return true;
}
</script>
>>>>>> 表单验证
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8" />
<style type="text/css">
.t{
text-align:center;
width:100px;
}
input{
margin-left:10px;
}
</style>
</head>
<body>
<table width="500px" height="400px"style="margin:100px auto; table-layout:fixed; word-break:break-all;
" border="1" cellspacing="0" cellpadding="0">
<form action="success.html" method="get" onsubmit="return checkAll()">
<tr>
<td class="t">用户名:</td>
<td><input type="text" name="username" onblur="checkName()"/><span></span></td>
</tr>
<tr>
<td class="t">密码:</td>
<td><input type="password" name="pwd" onblur="checkPwd()"/><span></span></td>
</tr>
<tr>
<td class="t">确认密码:</td>
<td><input type="password" name="pwd" onblur="checkPwd2()"/><span></span></td>
</tr>
<tr>
<td class="t">邮箱:</td>
<td><input type="text" name="email" onblur="checkEmail()" /><span></span></td>
</tr>
<tr>
<td class="t">性别:</td>
<td> <input type="radio" name="sex" value="man" />男 <input type="radio" value="woman" name="sex" />女<span></span></td>
</tr>
<tr>
<td class="t">爱好:</td>
<td><input type="checkbox" name="like"/>篮球 <input type="checkbox" name="like"/>足球<span></span></td>
</tr>
<tr>
<td class="t">城市:</td>
<td>
<select name="city">
<option value="nj">南京</option>
<option value="bj">北京</option>
</select>
<span></span>
</td>
</tr>
<tr>
<td class="t">自我描述:</td>
<td><input type="textarea" rows="4" cols="8" name="self"/><span></span></td>
</tr>
<tr>
<td colspan="2" style="padding-left:400px"><input type="submit" /></td>
</tr>
</form>
</table>
</body>
<script type="text/javascript">
//校验用户名
function checkName(){
var obj=document.getElementsByName("username")[0];
var username=obj.value
var reg=/^[A-Z0-9]{6,9}$/ig
var flag=reg.test(username);
console.log(flag)
var p=obj.parentNode;
var s=p.childNodes[1]
if(flag){s.innerHTML="正确".fontcolor("green") ;return true}
s.innerHTML=" 用户名错误".fontcolor("red")
}
//校验密码
function checkPwd(){
var obj=document.getElementsByName("pwd")[0];
var pwd=obj.value
var reg=/^[A-Z0-9]{6,9}$/ig
var flag=reg.test(pwd);
console.log(flag)
var p=obj.parentNode;
var s=p.childNodes[1]
if(flag){s.innerHTML="正确".fontcolor("green") ;return true}
s.innerHTML=" 密码错误".fontcolor("red")
}
function checkPwd2(){
var obj=document.getElementsByName("pwd")[0];
var obj1=document.getElementsByName("pwd")[1];
var pwd=obj.value
var pwd1=obj1.value
var p=obj1.parentNode;
var s=p.childNodes[1]
if(pwd==""||pwd!=pwd1){
s.innerHTML=" 密码不一致".fontcolor("red")
}else{
s.innerHTML="正确".fontcolor("green");return true
}
}
//检验邮箱
function checkEmail(){
var obj=document.getElementsByName("email")[0];
var email=obj.value
//5454@qq.com 23323232@123.123.com.cn 匹配邮箱正则
var reg=/^[a-z0-9]\w+@[a-z0-9]+(\.[a-z0-9]+){1,2}$/ig
var flag=reg.test(email);
console.log(flag)
var p=obj.parentNode;
var s=p.childNodes[1]
if(flag){s.innerHTML="正确".fontcolor("green") ;return true}
s.innerHTML=" 邮箱格式错误".fontcolor("red")
}
//表单提交时,重新检查表单项
function checkAll(){
var f=checkName();
var f1=checkPwd();
var f2=checkPwd2();
var f3=checkEmail();
return f&&f1&&f2&&f3?true:false;
}
</script>
</html>
</script>
</html>
五、正则表达式的量词解释
正则表达式的量词分别式贪婪,惰性,支配性
1.贪婪量词:先看整个字符串是不是一个匹配。如果没有发现匹配,
它去掉最后字符串中的最后一个字符,并再次尝试。
2.惰性量词: 先看字符串中的第一个字母是不是一个匹配。如果单独
这一个字符还不够,就读入下一个字符,组成两个字符的字符串。
如果还是没有发现匹配,惰性量词继续从字符串添加字符
直到发现一个匹配或者整个字符串都检查过也没有匹配。
惰性量词和贪婪量词的工作方式正好是相反的。
3.支配量词:只尝试匹配整个字符串。如果整个字符串不能产生匹配,不做
进一步尝试,支配量词其实简单的说,就是一刀切。
贪 婪 | 惰 性 | 支 配 | 描 述 |
---|---|---|---|
? | ?? | ?+ | 零次或一次出现 |
* | *? | *+ | 零次或多次出现 |
+ | +? | ++ | 一次或多次出现 |
{n} | {n}? | {n}+ | 恰好n次出现 |
{n,m} | {n,m}? | {n,m}+ | 至少n次枝多m次出现 |
{n,} | {n,}? | {n,}+ | 至少n次出现 |
>>>>>> 贪婪量词测试
<script>
var str="abbbaabbbaaabbb1234";
var re1=/.*bbb/g;
alert(re1.exec(str));
</script>
>>>>>> 惰性量词测试
<script>
var str="abbbaabbbaaabbb1234";
var re1=/.*?bbb/g;
alert(re1.exec(str));
</script>
>>>>>> 支配性量词测试
<script>
var str="abbbaabbbaaabbb1234";
var re1=/.*+bbb/g;
alert(re1.exec(str));
</script>
由于使用支配性量词不能匹配到任何字符串,所以没有截图。