js (5) javascript中的正则
正则表达式是用来匹配字符串的一种模式
数据类型是对象
正则相关方法: exec和test
字符串相关方法: search, match, split,replace
创建正则表达式
你可以通过下面两种方法创建一个正则表达式:
使用一个正则表达式字面量,如下所示:
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 })) |
字符串方法返回值有三类:
返回数字类型:indexOf,lastIndexOf,search , charCodeAt
返回数组的方法:split,match
返回字符串的方法:charAt,substring,substr, 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') 4 5 var demo = 'aaaabccccbacabc'; 6 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)); |

浙公网安备 33010602011771号