JavaScript-正则表达式

托管:welcometogit,欢迎交流

正则表达式简述

正则表达式(regularexpression)描述了一种字符串匹配模式,可以用来检查一个字符串是否含有某类字符串、将匹配的字符串做替换或者从某个字符串中取出符合某个条件的字符串等。ECMAScript的RegExp对象表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。

正则表达式修饰符

参数含义备注i忽略大小写g全局匹配m多行匹配u正确处理四个字节的UTF-16编码ES6新增y确保匹配必须从剩余的第一个位置开始ES6新增

正则表达式创建

创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用new
运算符,另一个是采用字面量方式。

varxzavier=newRegExp('xzavier');//第一个参数字符串varxzavier=newRegExp('xzavier','ig');//第二个参数可选修饰符varxzavier=/xzavier/;//直接用两个反斜杠varxzavier=/xzavier/ig;//第二个斜杠后面加上的是修饰符

和对象数组等一样,我们一致推崇使用字面量的方式。简便快捷。但是也有必须使用new的方式,
当你的正则表达式中含有变量的时候:

varreg='v';varpattern=newRegExp('xza'reg'ier');//这时候就不能使用字面量的方式了

正则表达式方法

RegExp对象的test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。

varpattern=newRegExp('xzavier','i');//正则模式,不区分大小写varpattern1=/xzavier/i;//创建正则模式,不区分大小写varstr='ThisisXzavier!';console.log(pattern.test(str));//trueconsole.log(pattern1.test(str));//trueconsole.log(/xzavier/i.test(str));//true

RegExp对象的exec()方法也用于在字符串中查找指定正则表达式,如果exec()方法执行成
功,则返回包含该查找字符串的相关信息数组。如果执行失败,则返回null。

varpattern=newRegExp('xzavier','i');varpattern1=/xzavier/i;varstr='ThisisXzavier!';console.log(pattern.exec(str));//["Xzavier"]console.log(pattern1.exec(str));//["Xzavier"]console.log(/xzavier1/i.exec(str));//null

String对象也提供了4个使用正则表达式的方法。
match(pattern)返回pattern中的匹配的字符串或null:

varpattern=/xzavier/ig;//全局匹配varstr='ThisisXzavier,thisisXzaviertoo.';console.log(str.match(pattern));//["Xzavier","Xzavier"]console.log(str.match(pattern).length);//2console.log('javascript'.match(/xzavier/ig));//null

replace(pattern,replacement)用replacement替换pattern:

varpattern=/xzavier/ig;varstr='ThisisXzavier,thisisXzaviertoo.';console.log(str.replace(pattern,'JavaScript'));//ThisisJavaScript,thisisJavaScripttoo.

search(pattern)返回字符串中pattern开始位置,查找到返回位置,否则返回-1:

varpattern=/xzavier/i;varstr='ThisisXzavier,thisisXzaviertoo.';varstr1='ThisisJavaScript,thisisJavaScripttoo.';console.log(str.search(pattern));//8console.log(str1.search(pattern));//-1

split(pattern)返回字符串按指定pattern拆分的数组:

varpattern=//ig;varstr='ThisisXzavier,thisisXzaviertoo.';console.log(str.split(pattern));//["This","is","Xzavier,","this","is","Xzavier","too."]

RegExp对象的静态属性

属性短名含义input$_当前被匹配的字符串lastMatch$