js (5) javascript中的正则

正则表达式是用来匹配字符串的一种模式

数据类型是对象

正则相关方法: exectest

字符串相关方法: searchmatchsplitreplace

 

创建正则表达式

你可以通过下面两种方法创建一个正则表达式:

使用一个正则表达式字面量,如下所示:
var re = /abc/;
正则表达式字面量在脚本加载后编译。若你的正则表达式是常量,使用这种方式可以获得更好的性能。

调用RegExp对象的构造函数,如下所示:
var re = new RegExp("abc"); 

split

切割字符串的方法,我们通常传递字符或者字符串来切割字符串,此时我们通常传递的参数是能看到的摸得着,是比较具体的,

当我们不能用一个完整的字符串表达这个切个符号的时候,但是我们能提炼换一个规则来切割,此时我们就可以用正则表达式来表示这个规则,切割字符串。

1 var str = 'a   b  c';

2 console.log(str.split(''))

3 console.log(str.split(/\s+/))

 

search

用来寻找字符或者字符串在父字符串中的位置,我们可以传递字符,也可以传递字符串。

1 var str = 'abcde';

2 console.log(str.indexOf('cd'))

3 console.log(str.search('cd'))

4 console.log(str.search(/cd/))

 

类数组:它是融合了数组和对象的一个对象,他可以使用数组的方法,有数组的属性,他也可以使用对象的方法,有对象的属性。

正则表达式中,是一个严格模式,一定注意,不要乱添加空格。

match

在父字符串中寻找匹配字符串,它是一个字符串方法,参数是配置字符串或者匹配的规则。

1 var str = 'abbcccbbbbbddbbbdabbbsbb';

2 console.log(str.match(/b+/g))

3 console.log(str.match('bb'))

 

2.5 replace

替换父字符串中匹配的字符串。

接收两个参数,

第一个是:匹配的字符串,可以是字符串也可以是正则表达式

第二个是:替换的字符串,可以是简单类型如字符串,也可以是函数,注意函数要有返回值,并且将这个返回值作为字符串

1 var str = 'www.aaabbb.cn';

2 // var str = 'www.aaabbb.com';

3 console.log(str.replace(/aaabbb\.cn/, 'aaabbb.com'));

4 console.log(str.replace(/aaabbb\.cn/, function() {

5  return 'aaabbb.com';

6 }))

 

字符串方法返回值有三类:

返回数字类型:indexOflastIndexOfsearch , charCodeAt

返回数组的方法:splitmatch

返回字符串的方法:charAtsubstringsubstr, slice, replace

 

2.6 replace

第一个参数是字符串或者是正则表达式,要是的是一个结果,当然也可以传递函数,注意,当传递的是函数时候一定要执行,并且有返回值,并返回值是字符串或者正则表达式。

第二个参数是字符串或者函数,字符串表示结果,当匹配过程中不会执行,如果是函数的话,分成两种情况,如果执行了跟字符串效果一样,如果没执行,会在匹配过程中执行。

很多情况下,一次性匹配需要写的正则表达式比较复杂,此时我们可以将其拆分开来,一步一步替换处理。

\s+ 它是贪婪模式,她会尽可能多的去匹配,这样匹配的次数比较少,性能更高

\s 它只表示一个空格,所以匹配的次数多,性能相对低些。


exec

它是正则对象的方法

正则表达式我们有两种创建方式。

字面量形式: var str = /abc/g;  表示全局匹配abc字符串

实例化形式:var reg = new RegExp('abc', 'g')  表示创建一个匹配abc字符串的正则对象,注意,转义字符要用双反斜杠’\\’,原因是第一个参数是字符串不是正则表达式。

所以使用exec方法是,只需要对正则对象直接调用即可,他表示在字符串中匹配符合正则规则的字符串

1 // 匹配abc字符串

2 var str = /abc/g;

3 var reg = new RegExp('abc', 'g')

5 var demo = 'aaaabccccbacabc';

7 // str.exec('abcd') => [abc]

8 console.log(str.exec(demo));

9 // str.exec('abcd') => [abc]

10 console.log(reg.exec('aaaabccccbacabc'));

 

test

正则对象的一个方法,它表示该字符串(参数)是否匹配我们的正则规则。

 

1 // var reg = /hello/;

2 var reg = /aaabbb/;

3 var str = 'hello aaabbb';

4 // 判断str字符串是否匹配我们reg规则

5 console.log(reg.test(str));

6 var demo = prompt('不准输入空格');

7 alert(/\s/.test(demo));

posted @ 2018-11-20 14:18  aocn  阅读(103)  评论(0)    收藏  举报