js正则表达式1
知识转自阮一峰老师的教程
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--新建正则两种方式--> <!--var reg=/\d/--> <!--var reg=new RegExp('\d')--> <!--两者的区别在于一个是编译时创建,--> <!--一个是运行时创建--> <!--际应用中,基本上都采用字面量的写法。--> <!--正则对象生成以后,有两种使用方式:--> <!--正则对象的方法:将字符串作为参数,比如regex.test(string)。--> <!--字符串对象的方法:将正则对象作为参数,比如string.match(regex)。--> </body> <script> // 正则对象的属性和方法 //正则对象的属性分成两类。 //一类是修饰符相关,返回一个布尔值,表示对应的修饰符是否设置。 //ignoreCase:返回一个布尔值,表示是否设置了i修饰符,该属性只读。 //global:返回一个布尔值,表示是否设置了g修饰符,该属性只读。 //multiline:返回一个布尔值,表示是否设置了m修饰符,该属性只读。 var r=/abc/igm; console.log(r.ignoreCase,r.global,r.multiline) //true true true //另一类是与修饰符无关的属性,主要是下面两个。 //lastIndex:返回下一次开始搜索的位置。该属性可读写,但是只在设置了g修饰符时有意义。 //source:返回正则表达式的字符串形式(不包括反斜杠),该属性只读。 console.log(r.source);//abc // // 方法: //test() //正则对象的test方法返回一个布尔值,表示当前模式是否能匹配参数字符串。 //var r = /x/g; //var s = '_x_x'; // //r.lastIndex = 4; //r.test(s) // false //如果正则模式是一个空字符串,则匹配所有字符串。 //new RegExp('').test('abc') // true //如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配。 //var r = /x/g; //var s = '_x_x'; // //r.lastIndex // 0 //r.test(s) // true // //r.lastIndex // 2 //r.test(s) // true // //r.lastIndex // 4 //r.test(s) // false //exec() //正则对象的exec方法,可以返回匹配结果。如果发现匹配,就返回一个数组,成员是每一个匹配成功的子字符串,否则返回null。 // var reg=/ab/; // var reg1=/bc/; // var str="abcdef"; // console.log(reg.exec(str),reg1.exec(str)) //如果正则表示式包含圆括号(即含有“组匹配”),则返回的数组会包括多个成员。 //第一个成员是整个匹配成功的结果,后面的成员就是圆括号对应的匹配成功的组。 //也就是说,第二个成员对应第一个括号,第三个成员对应第二个括号,以此类推。 //整个数组的length属性等于组匹配的数量再加1。 //var s = '_x_x'; //var r = /_(x)/; // //r.exec(s) // ["_x", "x"] //exec方法的返回数组还包含以下两个属性: // //input:整个原字符串。 //index:整个模式匹配成功的开始位置(从0开始计数)。 //var r = /a(b+)a/; //var arr = r.exec('_abbba_aba_'); //arr // ["abbba", "bbb"] // //arr.index // 1 //arr.input // "_abbba_aba_" //字符串对象的方法 //match():返回一个数组,成员是所有匹配的子字符串。 //search():按照给定的正则表达式进行搜索,返回一个整数,表示匹配开始的位置。 //replace():按照给定的正则表达式进行替换,返回替换后的字符串。 //split():按照给定规则进行字符串分割,返回一个数组,包含分割后的各个成员。 //macth方法 //var s = 'abba'; //var r = /a/g; //s.match(r) // ["a", "a"] //r.exec(s) // ["a"] //如果正则表达式带有g修饰符,则该方法与正则对象的exec方法行为不同,会一次性返回所有匹配成功的结果。 //serch()方法 //var r=/\.x/; // var str="pl.x"; // console.log(str.search(r));//2 //字符串对象的search方法,返回第一个满足条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1。 // replace()方法 //字符串对象的replace方法可以替换匹配的值。它接受两个参数,第一个是搜索模式,第二个是替换的内容。 // replace(s1,s2); //'aaa'.replace('a', 'b') // "baa" //'aaa'.replace(/a/, 'b') // "baa" //'aaa'.replace(/a/g, 'b') // "bbb" //replace方法的一个应用,就是消除字符串首尾两端的空格。 //var str = ' #id div.class '; // // console.log(str.replace(/^\s+|\s+$/g, '')) //replace方法的第二个参数可以使用美元符号$,用来指代所替换的内容。 //$& 指代匹配的子字符串。 //$` 指代匹配结果前面的文本。 //$' 指代匹配结果后面的文本。 //$n 指代匹配成功的第n组内容,n是从1开始的自然数。 //$$ 指代美元符号$。 // split()方法 //字符串对象的split方法按照正则规则分割字符串,返回一个由分割后的各个部分组成的数组。 // 非正则分隔 //'a, b,c, d'.split(',') //// [ 'a', ' b', 'c', ' d' ] // //// 正则分隔,去除多余的空格 //'a, b,c, d'.split(/, */) //// [ 'a', 'b', 'c', 'd' ] // //// 指定返回数组的最大成员 //'a, b,c, d'.split(/, */, 2) // [ 'a', 'b' ] </script> </html>