您的位置:首页 > Web前端 > JavaScript

JS-正则表达式-基础

2017-06-09 21:17 169 查看
1.正则表达式:正则表达式是对字符串操作的的一种逻辑公式,是针对字符串的操作规则。

2.声明方式

var re=/表达式/; (常用方式)

var re=new RegExp(/表达式/);当正则里需要传参数时必须用这种正式的方式

3.常用的方法

(1)test :正则去匹配字符串,如果匹配成功,就返回真true,若匹配失败则返回假false

写法:正则.test(字符串

例1

var str = ‘abcdef’; //匹配的字符串

var re = /b/; //正则匹配 字符串中是否有b

alert( re.test(str) ); //true 匹配成功

var re=/de/; //匹配de

alert(re.test(str)); //true

var re=/ae/; //匹配ae

alert(re.test(str)); //false 因ae看做一个整体在字符串中匹配

(2)search:正则去匹配字符串,匹配成功则返回位置,匹配失败返回-1

写法:字符串.search(正则)

例2

var str= ‘abcdef’; //字符串

var re=/a/; //匹配a

alert(str.search(re));//0 匹配成功返回位置0

var re=/de/; //匹配de

alert(str.search(re));//3 匹配成功返回第一个字符的位置3

var re=/B/; //匹配B

alert(str.search(re));//-1 匹配失败返回-1,说明正则默认中区分大小写

var re=/B/i; //匹配B

//var re= new RegExp(‘B’, ‘i’);//全写方式

lert(str.search(re));//1 匹配成功返回位置1,如果不区分大小写,可在正则的最后加标识i

(3)match:正则去匹配字符串,若匹配成功就返回匹配成功的数组,否则返回null

写法:字符串.match(正则)

例3

var str= ‘asdffghgjk4359fgf846’;

var re=/f/;

alert(str.match(re));//f ,只返回一个f

//正则默认:正则匹配成功就会结束匹配,若想全部查找加标识g(全局匹配)

var re=/f/g;

alert(str.match(re));//f,f,f,f 只返回四个f

(4)replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串

写法:字符串.replace(正则,新的字符串)

例4

var str=’aabbccdd’;

var re=/a/;

alert(str.replace(re,’n’));//nabbccdd,默认匹配一个结束匹配

var re=/a/g; //加全局匹配

alert(str.replace(re,’n’));//nnbbccdd

4:转义字符:

\s 匹配空格

\S 匹配非空格

\d 匹配数字

\D 匹配非数字

\w 匹配字符(字母、数字、下划线)

\W 匹配非字符

.(点)任意字符

. 真正的点

\b 独立的部分(起始、结束、空格)

\B 非独立部分

例5

var str=’ ab23cde13f ‘;

var re=/\s/g;

alert( re.test(str) ); //true ,有空格匹配成

alert(str.search(re)); //0 ,返回空格位置0

alert(str.replace(re,’n’)); //nab23cde13fn

var re=/\d/g;

alert( re.test(str) ); //true ,有数字匹配成功

alert(str.search(re)); //3,返回第一个数字的位置3

alert(str.replace(re,’n’)); // abnncdennf

var re=/\w/g;

alert( re.test(str) ); //true ,有数字匹配成功

alert(str.search(re)); //1,返回第一个字符的位置1

alert(str.replace(re,’n’)); //nnnnnnnnnn

var re=
4000
/a./g;

alert( re.test(str) ); //false,匹配不到点

alert(str.search(re)); //-1,返回-1

alert(str.replace(re,’n’)); // ab23cde13f

var re=/a./g; //匹配任意字符

alert( re.test(str) ); //true,匹配成功

alert(str.search(re)); //1,返回第一个字符的位置1

alert(str.replace(re,’n’)); // n23cde13f

var re=/a\b/g;

alert( re.test(str) ); //false

alert(str.search(re)); //-1,返回-1

alert(str.replace(re,’n’)); // ab23cde13f

var re=/\ba/g;

alert( re.test(str) ); //true,a的前面是空格,可以匹配到

alert(str.search(re)); //1,返回a的位置1

alert(str.replace(re,’n’)); // nb23cde13f

var re=/\ba\b/g;

alert( re.test(str) ); //false,a的前面是空格,但后面有字符,匹配失败

alert(str.search(re)); //-1,返回-1

alert(str.replace(re,’n’)); // ab23cde13f

5.量词

{ }可以规定出现的次数

+ 至少出现一次{1,}

? 出现零或一次{0,1}

* 至少出现零次{0,}

{4} 正好出现4次

{4,} 至少出现4次

{4,7} 至少出现4次,最多7次

例6

var str=’aabcddef’;

var re=/ab+/g;

alert( re.test(str) ); //true;

var re=/ab?/g;

alert( re.test(str) ); //true;

var re=/ab*/g;

alert( re.test(str) ); //true;

var re=/ab{3}/g;

alert( re.test(str) ); //false

var re=/ac+/g;

alert( re.test(str) ); //false;

var re=/ab*/g; //* 至少出现0次

alert( re.test(str) ); //true;

var re=/ab?/g; //出现0次或1次

alert( re.test(str) ); //true;

6.特殊字符

^ 正则最开始位置,就代笔起始的意思

$ 正则最后位置,就代笔结束位置

| 或的意思

例7

//判断是不是qq.号

var re=/^[1-9]\d{4,11}$/;//第一个数字是0-9,后面匹配数字,qq号为5-11位 alert(

re.test(str) );

//去除字符串的前后空格

function trim(str){

var re=/^\s+ |\s+ $/g;//匹配字符串的前后空格

return str.replace(re,’ ‘);

}

7.匹配子项

()又称分组操作,把正则的整体成为”母亲”;然后把左边第一个小括号里面的正则,叫做第一个子项,第二个小括号就是第二个子项

例8

var str=2017-6-2;

var re=/(\d+)(-)/g;

// n0 第一个参数,代表”母亲”,n1代表匹配到的第一个子项(\d+),n2代表匹配的第二个子项(-)

str=str.replace(re,function(n0,n1,n2) { //replace的第二个参数可以是回调函数

alert(n0); //2017-,6-

alert(n1); //2017, 6

alert(2);//−−return0.substring(0,n0.length-1)+’.’;

});

alert(str); // - - 2017.6.2

var str=’abc’;

var re=/abc/;

alert(str.match(re));//abc

var re=/(a)(b)(c)/;

alert(str.match(re));//abc,a,b,c

(当match不加g的时候才可以获取到子项的集合)

8.字符类

[] []内看做整体

^ ^写在[]里面就是排除的意思

例9

var str=’abc’;

var re=/a[bcs]c/; //[]内看做整体,里面的字符是或的关系,匹配到一个就成功

alert(re.test(str));//true

var re=/a[nmp]c/;

alert(re.test(str));//false

var re=/a[^bde]c/;

alert(re.test(str));//false

var re=/a[^nmp]c/;

alert(re.test(str));//true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  基本用法