首先我们看一下JS的正则对象长什么样
<!DOCTYPE html>
<html>
<head>
<title>JS中的正则对象方法 test exec</title>
</head>
<body>
<script type="text/javascript">
console.log(RegExp.prototype);//查看构造函数的原型对象
// console.log((new RegExp()).__proto__);//查看实例对象的原型对象
</script>
</body>
</html>
以上代码中我们通过查看正则构造函数RegExp的原型对象的方式可以看到RegExp实例对象的方法,其中有两个方法比较常用,text和exec,其余几乎用不到,的我们就不讲了。
在讲正则表达式之前,我们需要知道的是,正则表达式也是一种字符串,只不过这个字符串比较特殊。
普通字符串是写在单双引号之间的,而正则表达式是写到两个正斜线之间,例如:/这里写正则表达式/这里写修饰符。
一、test方法
用来测试匹配是否成功,成功返回true,失败返回false。
<!DOCTYPE html>
<html>
<head>
<title>JS中的正则对象方法 test exec</title>
</head>
<body>
<script type="text/javascript">
var str = 'teamczyx.com';
var pattern = /^[a-z]/;//以小写字母开头
var res = pattern.test(str);//测试被匹配的字符串是否以小写字母开头
console.log(res);//true
if(res){
console.log('格式正确');
}else{
console.log('格式错误');
}
</script>
</body>
</html>
以上我们定义了一个正则表达式,var pattern = /^[a-z]/;,其中pattern就是正则表达式构造函数RegExp的实例对象。
正则表达式构造函数RegExp和字符串构造函数String非常类似,我们不必通过new RegExp()来取得实例对象,字面量定义即可。
如同var str='hello'一样,str就是一个String对象。
有了正则对象后,我们通过pattern.test()的方式调用实例对象上的test方法测试一个字符串是否符合我们的正则规则,如果符合就返回true,否则返回false。
至于其中的正则表达式^[a-z]的写法,目前我们先不必理解,后面会讲的。
执行结果如下:
二、exec方法
从字符串中取出符合正则表达式规则的字符串,成功返回字符串,失败返回null。
<!DOCTYPE html>
<html>
<head>
<title>JS中的正则对象方法 test exec</title>
</head>
<body>
<script type="text/javascript">
var str = 'teamczyx.com';
var pattern = /[a-z]/;//匹配小写字母字符串
var res1 = pattern.exec(str);
console.log(res1);//["p"] 只匹配一次,返回数组
</script>
</body>
</html>
执行结果如下:
以上代码中由于我们没有加修饰符g,所以只匹配到第一个。
如果加了修饰符g后,则每执行一次匹配就向后匹配一个,看代码:
<!DOCTYPE html>
<html>
<head>
<title>JS中的正则对象方法 test exec</title>
</head>
<body>
<script type="text/javascript">
var str = 'teamczyx.com';
var pattern = /[a-z]/g;//匹配小写字母字符串
var res1 = pattern.exec(str);
console.log(res1);//["p"] 只匹配一次,返回数组
var res1 = pattern.exec(str);
console.log(res1);//["p"] 只匹配一次,返回数组
</script>
</body>
</html>
第一次匹配到t,第二次匹配到e。
ok,以上就是正则对象中两个常用的方法test和exec,大家自己练习一下。
|