5.2 正则表达式 RegExp

距离5.1 有一个星期了,这一个星期主要是花在了练习CSS上,仿写了一个淘宝首页,今天接着看高级程序设计部分:

1.使用字面量定义

每个正则表达式可以带有一个或多个标志,用以表明正则表达式的行为:
g:表示全局,应用于全局,而不是发现第一个匹配时停止
i:表示不区分大小写
m:表示多行模式,即到达一行文本末时还会继续查找下一行。
正则表达式的元字符:

  1. ( [ { \ ^ $ | }? * + . ] )
  2. 数字键:$ ^ * ()+
  3. 括号建:{ } [] | \ . ?

例如:

var Str = 'tyt12tyt';
var pattern1 = /[ty]t/; //匹配第一个 tt 或yt
var pattern2 = /\[ty\]t/; //匹配第一个 [ty]t
var pattern3 = /.ty/;//匹配以ty结尾的3个字符, . 表示位于ty之前的任意一个可以构成匹配想的字符

^ 匹配字符串的开始位置; $ 匹配字符串的结束位置;* 匹配前面子表达式0次或多次,相当于{0,}; + 匹配前面子表达式1次或多次;?匹配前面子表达式0次或1次
\s 匹配空格符 制表符 和其他Unicode空白符
在这里插入图片描述
在这里插入图片描述

2.使用构造函数 RegExp

var pattern1 = new RegExp(‘ty’,‘g’);
由于构造函数的模式参数是字符串,所以在某些情况下要对字符进行双层转义 \ ,所有元字符必须双重转义。
使用正则表达式字面量和使用RegExp 构造函数创建的正则表达式不一样。在ECMA3中,正则表达式字面量时钟共享一个RegExp实例,而使用RegExp创建的每一个RegExp都是新实例

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

在第一个循环中,即使是循环体中指定的,但实际上只为/cat/创建了一个 RegExp 实例。由于实
例属性(下一节介绍实例属性)不会重置,所以在循环中再次调用 test()方法会失败。这是因为第一
次调用 test()找到了"cat",但第二次调用是从索引为 3 的字符(上一次匹配的末尾)开始的,所以
就找不到它了。由于会测试到字符串末尾,所以下一次再调用 test()就又从开头开始了。
第二个循环使用 RegExp 构造函数在每次循环中创建正则表达式。因为每次迭代都会创建一个新的
RegExp 实例,所以每次调用 test()都会返回 true。
ECMAScript 5 明确规定,使用正则表达式字面量必须像直接调用 RegExp 构造函数一样,每次都创
建新的 RegExp 实例。 IE9+、 Firefox 4+和 Chrome 都据此做出了修改。

3.RegExp 实例属性:

global :布尔值,表示是否设置了g标志
ignoreCase : 布尔值,表示是否设置了i标志
lastIndex : 整数,表示开始搜索下一匹配项的字符位置,从0算起
multiline:布尔值,表示是否设置了m标志
source: 正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回

var pattern1 = /\[bc\]at/i;
alert(pattern1.global); //false
alert(pattern1.ignoreCase); //true
alert(pattern1.multiline); //false
alert(pattern1.lastIndex); //0
alert(pattern1.source); //"\[bc\]at"
4.RegExp 实例方法:

主要对象方法是 exec() ,它接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息项的信息的数组,或者在灭有的情况下返回null。返回的数组包含两个额外属性,index和input,index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。
第二个方法是 test(),接受一个字符串参数,在匹配的情况下返回true,反之返回false;京城被用在if语句中:

var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
alert("The pattern was matched.");
}

5.使用正则表达式,可以:

 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或者一个信用卡号码模式,这称为数据有效性验证。
 替换文本。可以在文档中使用一个正则表达式来表示特定文字,然后将其全部删除或者替换为别的文字。
 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字

谢谢指导,希望给为指导下我这个小菜鸟,留下足迹,留下赞

发布了18 篇原创文章 · 获赞 44 · 访问量 3687

猜你喜欢

转载自blog.csdn.net/qq_44758322/article/details/105533375
今日推荐