正则表达式

一.正则表达式介绍

正则表达式(Regular Expression)是一个描述字符模式的对象,用于对字符串进行匹配,一般用在有规律的字符串匹配中;常用于表单验证。

创建正则表达式有两种方式:

1.使用new

var box = new RegExp("box"); //传入非空字符串 
console.log(box);   // /box/
console.log(typeof box); //object

var box = new RegExp("box", "gi");  //第二个参数是模式修饰符
console.log(box); // /box/gi

2.采用字面量方式

var box = /box/;
console.log(box);   // /box/
console.log(typeof box); //object
			
var box = /box/gi;
console.log(box); // /box/gi

注意: 其中g表示全局匹配,  i表示忽略大小写

二.正则表达式的使用

1.使用正则表达式匹配字符串有两种方式;

test() 返回true则符合,false则不符合

exec() 返回数组则符合,null则不符合

这两种方式使用正则表达式对象去调用,参数为要匹配的字符串

var box = /box/gi;
var str = "This is a Box bOX box";
console.log(box.test(str));
console.log(/box/gi.test(str));

var box = /box/gi;
var str = "This is a Box boX"
console.log(box.exec(str));
console.log(/box/gi.exec(str));

2.字符串的正则表达式方法

除了test()和exec()方法,String对象也提供了4个使用正则表达式的方法。

match()查找放回数组或null

var str = "This is a Box box BoX";
var matchArr = str.match(/box/gi);
console.log(matchArr); //返回数组或null

replace()查找并替换

var replaceStr = str.replace(/box/gi, "xxx");
console.log(replaceStr);

search()查找并返回匹配的字符串的起始位置,找不到匹配的则返回-1


var searchIndex = str.search(/box/i);
console.log(searchIndex);
			

split()分割成数组

//根据指定字符串拆分, 返回拆分后的数组, 否则返回原字符串
var splitArr = str.split(/b/i);
console.log(splitArr.length);

3.修饰符

. 号字符,代表除了换行之外的所有的单个字符

var pattern = /g..gle/;   //一个点.匹配一个任意的字符
var str = "goagle";
console.log(pattern.test(str));

*号字符,匹配其他字符使用,允许其他字符出现任意多次

// 重复多次匹配, 可以出现任意次, 
var  pattern = /g.*gle/; //.* 匹配0到多个字符
var  str = "google" 
console.log(pattern.test(str)); 

[]表示字符可用出现的范围

//[a-z]*表示任意0到多个a-z的字母
var pattern = /g[a-z]*gle/;
var str = "google";
console.log(pattern.test(str));

非字符 ^

var pattern = /g[^0-9]*gle/; //可以有任意多个非0-9的字符
var str = "google";
console.log(pattern.test(str)); 

+表示至少出现1次

//[A-Z]+: 至少出现一个A-Z的字符
var pattern = /[a-z][A-Z]+/;
var str = "gooGle";
console.log(pattern.test(str)); 

使用元符号匹配

//\w* :匹配任意多个数字字母下划线 , \w : 等价于[a-zA-Z0-9_] 
var pattern = /g\w*gle/;
var str = "gooA3gle";
console.log(pattern.test(str));

\d 代表数字,等价于[0-9]

//\d* 表示任意多个数字
var pattern = /g\d*gle/;
var str = "g3243gle";
console.log(pattern.test(str)); 

\D 匹配非数字,相对于[^0-9]

var pattern = /g\Dgle/;
var str = "ga3gle";
console.log(pattern.test(str)); 

\D{7} 匹配至少7个非数字,相对于[^0-9]{7,}

var pattern = /\D{7,}/;
var str = "g3243gle";
console.log(pattern.test(str)); 

使用锚元字符

/^匹配开头,从头开始匹配

$/匹配结尾,从结尾开始匹配

var pattern = /^google$/;
var str = "google";
console.log(pattern.test(str));

\s匹配空格 \S 非空白字符

var pattern = /goo\sgle/;
var str = "goo gle";
console.log(pattern.test(str));

| 使用或模式匹配

// | 代表或者的意思, 匹配其中一种字符串
var pattern = /google|baidu|bing/;  // | : 匹配三个中的其中一个字符串
var str = "googl2e bai3du;bingl"
console.log(pattern.test(str));

() 分组模式匹配

// ()加上小括号, 将内容进行分组, 可以作为一个整体进行多次匹配
var pattern = /(google){4,8}/;   //匹配分组中的字符出现4-8次
var str = "googlegooglegooglegoogle"
console.log(pattern.test(str));

使用exec返回数组

exec()方法将匹配到的内容返回,并返回一个数组

//以字母开头,至少一个, 忽略大小写
var pattern = /^[a-z]+/i;
var str = "google 2016";
console.log(pattern.exec(str)); //"google"

g全局查找,i忽略大小写,m分组,?表示0到1个,\转义字符,?:后面的分组不匹配,RegExp.$1 获取第一个括号匹配的内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值