JS-正则表达式-基础

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=/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);//return 0.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值