js的正则表达式

来源:互联网 发布:access数据库下载 绿色 编辑:程序博客网 时间:2024/09/21 11:05

1、正则表达式

描述字符模式的对象,用于进行字符串匹配。一般用于表单验证中,匹配用户名是否正确、邮箱地址格式是否正确等。
正则表达式语法:    var expression = / pattern / flags;
pattern:可以是任何简单或者复杂的正则表达式;
flags:匹配模式(i、g、m);
i:指不区分大小写; g:全局模式,应用于所有字符串; m:多行模式,到达文本末尾,继续查找下一行。

2、正则表达式的创建


1.字面量定义:
var pattern = /ab/g;
2.构造函数定义:
var pattern = new RegExp('ab','g');

3、正则表达式特殊字符的含义

.号元字符, 代表除了换行之外的所有单个字符;
*号元字符, 配合其他字符使用, 允许其他字符出现任意多次;
 [ ] : 表示字符可以出现的范围
非字符:  ^
+ 表示至少出现1次;
\w :匹配任意数字字母下划线;
\d 代表数字, 等价于 [0-9]
\D: 匹配非数字, 相当于[^0-9]
\D{7}: 匹配至少7个非数字
\D{3,7}: 匹配至少3个,最多7个非数字;
/^ 匹配开始,从头开始匹配
$/ 匹配结尾,从结尾开始匹配
\s 匹配空格
\b 可以匹配是否到了边界,按单词搜索
?:表示出现0次或者1次;
| 代表或者的意思, 匹配其中一种字符串
()加上小括号, 将内容进行分组, 可以作为一个整体进行多次匹配

4、正则表达式方法

exec();返回数组
将匹配到的内容以数组的形式返回
var str = 'hello googlooe';var patterns = /oo/g;console.log(patterns.exec(str));

没有匹配项的情况返回null。其中返回匹配项的情况,有格外的两个属性,index和input;
index指:匹配项的索引,input指应用正则表达式的字符串;


test(),返回true或者false
var str = 'hello googlooe';var patterns = /oo/g;console.log(patterns.test(str));

match(),返回要匹配的字符串,是字符串的一个方法;
var str = 'hello googlooe';var patterns = /oo/g;console.log(str.match(patterns));


search(),返回所匹配到对应的索引位置;
var str = 'hello googlooe';var patterns = /oo/g;console.log(str.search(patterns));

上述方法若已匹配到一项,则不会继续再往下匹配

疑点:


在ECMAscript3中,正则表达式字面量始终共享一个RegExp实例,而构造函数创建的RegExp实例每一个都是新的。


var re = null,i;for(i = 0; i < 10; i++){   re = /cat/g;    re.test("catastrophe");}

所以在循环体中,实际上只为/cat/创建了一个RegExp的实例,在循环中再次调用test()时,会在从上一次找到的那个索引继续开始,
而不是从头到尾开始,所以就会调用失败。
只有当测试到字符串末尾时,再次调用test(),才会从头开始。

原创粉丝点击