0324刷题:正则表达式中的捕获

1. parseInt() 函数

parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string, radix):参数string表示要被解析的字符串,参数radix 表示要解析的数字的进制。当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。10进制遇到不是数字, 直接无视

parseInt("10");			//返回 10
parseInt("19",10);		//返回 19 (10+9)
parseInt("11",2);		//返回 3 (2+1)
parseInt("17",8);		//返回 15 (8+7)
parseInt("1f",16);		//返回 31 (16+15)
parseInt("010");		//未定:返回 10 或 8
parseInt("0x12",10);		//返回 0

2.类数组对象:arguments

当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面.
Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素,arguments.length为函数实参个数,

3.正则表达式

1.正则对象及其属性
1)构造函数方式

var  reg=new RegExp('abc','gi');

这里,第一个参数是正则的内容,第二个参数是修饰符,修饰符通常有三种,i,g,m,i表示的含义是忽略大小写进行匹配,g表示全局匹配即匹配到第一个之后不停止继续匹配,m表示多行匹配即遇到换行后不停止匹配继续直到被匹配字符串结束。

2)字面量方式

var  reg=/abc/gi;

两个斜杠之间的是定义的正则内容,最后一个斜杠之后的是修饰符,这种方式比第一种简单高效,所以通常使用第二种方式来定义正则。

2.属性

可以看到它拥有global属性,该属性为布尔类型,用来表示该正则是否是全局匹配,ignoreCase属性,布尔类型,用来指示是否忽略大小写,lastIndex为number类型,用来表示上次匹配成功的位置,multiline,布尔类型,用来表示是否是多行匹配,source,string类型,用来表示正则的内容。

3.方法

通常对于一个正则对象来讲,我们能够使用的方法基本上有三个,即regObj.test , regObj.exec及regObj.compile

<script type="text/javascript">
    //①test()判断字符串中是否出现某个字符串,返回布尔值
    var re = /abc/;
    var str = '00abc66';
    console.log(re.test(str));
    //②exec()查找并返回字符串中指定的某个字符串,只匹配一次
    var re = /abc/;
    var str = 'a0bc88abc00abc';
    console.log(re.exec(str));
    //③compile()方法用于改变正则匹配的内容
    var re = /ab/;
    var str = "aabcdef";
    console.log(re.test(str));  //true
    re.compile(/bd/);
    console.log(re.test(str));  //false
    re.compile('66');
    console.log(re.test(str));  //false
</script>

以上就是正则对象及其方法,其实在使用的过程中,JS中的String类型的对象也拥有一些和正则相关的方法,如下:

<script type="text/javascript">
    //①search()方法,返回符合条件的字符串首次出现的位置(下标)
    var re = /abc/;
    var str = '00abc66';
    console.log(str.search(re));
    //②match()方法,返回查找的结果,如果查询不到返回NULL
    console.log(str.match(re));
    //③replace()方法,将匹配到的内容替换成指定内容
    console.log(str.replace(re,"*"));
    //④split()方法,将字符串分割成字符串数组
    console.log(str.split(re));
</script>

4.正则表达式的编写格式
1)、正则表达式的组成
①匹配符(查什么字符)
②限定符(查多少所匹配字符)
③定位符(查询范围)
④修饰符(附加规则)

2)、正则表达式子表达式相关
①子表达式
在正则表达式中,通过一对圆括号括起来的内容,我们就称之为“子表达式”。如:var re = /\d(\d)\d/;
②捕获
在正则表达式中,子表达式匹配到相应的内容时,系统会自动捕获这个行为,然后将子表达式匹配到的内容放入系统的缓存区中。我们把这个过程就称之为“捕获”。
③反向引用
在正则表达式中,我们可以使用\n(n>0,正整数,代表系统中的缓冲区编号)来获取缓冲区中的内容,我们把这个过程就称之为“反向引用”。

示例:

<script type="text/javascript">
    var str = "d1122jj7667h6868s9999";
    //查找AABB型的数字
    console.log(str.match(/(\d)\1(\d)\2/)); //1122
    //查找ABBA型的数字
    console.log(str.match(/(\d)(\d)\2\1/)); //7667
    //查找ABAB型的数字
    console.log(str.match(/(\d)(\d)\1\2/)); //6868
    //查找四个连续相同的数字
    console.log(str.match(/(\d)\1\1\1/));   //9999
</script>

3)、匹配符
匹配量的:

*:匹配前面的子表达式零次或多次,0到多
+:匹配前面的子表达式一次或多次,1到多  
?:匹配前面的子表达式零次或一次,0或1 
{n}:匹配确定的 n 次 
{n,}:至少匹配 n 次   
{n,m}:最少匹配 n 次且最多匹配 m 次

匹配位置的:

^ (脱字符):匹配输入字符串的开始位置
$:匹配输入字符串的结束位置

匹配并且需要支持分组的时候需要括号来包裹:(匹配的模式)
匹配条件的:|, 表示或者
匹配集合的:[]
匹配非集合的:[^] 脱字符来表示取反的含义
4)、转义字符
因为在正则表达式中 . + \ 等属于表达式的一部分,但有时也需要匹配这些特殊字符,所以,需要使用反斜杠对特殊字符进行转义。

需要转移的字符:
点号.
小括号()
中括号[]
左斜杠/
右斜杠\
选择匹配符|
 
* 
?
{}
+ 
$
^

4.indexOf() 方法:字符串首次出现的位置

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法:stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

5.向数组开头添加元素

//利用concat
function prepend(arr, item) {
    return [item].concat(arr);
}

//使用push.apply
//push表示末尾添加
function prepend(arr, item) {
    var newArr=[item];
    [].push.apply(newArr, arr);
    return newArr;
}

//利用slice+unshift/splice
//slice表示从第一个位置开始取元素
//unshift()方法表示开头添加
//splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目
function prepend(arr, item) {
    var newArr=arr.slice(0);
    newArr.unshift(item);//newArr.splice(0,0,item);
    return newArr;
}

//使用join+split+unshift/splice组合
//join() 方法将数组中的所有元素放入一个字符串
//split() 方法用于把一个字符串分割成字符串数组
function prepend(arr, item) {
    var newArr=arr.join().split(',');
    newArr.unshift(item);//newArr.splice(0,0,item);
    return newArr;
}

//普通的迭代拷贝
function prepend(arr, item) {
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    newArr.unshift(item);
    return newArr;
}

这四个都很常用返回值不一样,注意区别:
push() 在数组的末尾添加一个或多个元素 返回数组新长度

pop() 移除数组的最后一项,返回移除的项

shift() 移除数组的第一项,返回移除项

unshift() 在数组的第一项前面添加一个或多个元素,返回数组的长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值