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>

 

posted @ 2016-11-16 16:27  不正经的CodeMonkey  阅读(251)  评论(0编辑  收藏  举报