正则表达式

正则表达式是由一个字符序列形成的搜索模式。

当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。

正则表达式可用于所有文本搜索和文本替换的操作。

1.0 创建方法

字面量创建

var reg = /正则表达式/修饰符;
var reg = /hello/img;

构造函数创建

var reg = new RegExp('正则表达式','修饰符');
var reg = new RegExp('hello','img');

2.0 方法

2.1 exec

var reg = /hello/;
var str = 'hello worle hello javascript';
console.log(reg.exec(str));

//执行结果
/*[
  'hello',
  index: 0,
  input: 'hello world hello javascript',
  groups: undefined
]*/

注:根据正则表达式(reg)校验字符串(str)中是否有连续的‘hello’,没有则返回null,则返回 数组:[匹配的内容,index: 在str中匹配的起始位置,input: 参数字符串,groups: undefined]  

2.2 test

var reg = /hello/;
var str = 'hello world hello javascript';
console.log(reg.test(str));
//执行结果
//true

注:根据正则表达式(reg)校验字符串(str)中是否有连续的‘hello’,没有则为false,有则为true

3.0 修饰符与lastIndex属性

3.1 修饰符

ignoreCase、global、multiline 三个修饰符简写为igm

var reg = /hello/igm;

i:匹配校验时忽略字母的大小写

g:进行全局的匹配

m:进行多行匹配 如:多行文字匹配

注:i,g,m可以单独使用也可以多个使用

3.2 lastIndex属性

var str = 'hello hello hello';
var reg1 = /hello/;
var reg2 = /hello/g;
console.log(reg1.lastIndex);  // 0
console.log(reg1.exec(str));  // 返回第一个hello
console.log(reg1.lastIndex);  // 0

console.log(reg2.lastIndex);  // 0
console.log(reg2.exec(str));  // 返回第一个hello
console.log(reg2.lastIndex);  // 5

console.log(reg2.lastIndex);  // 5
console.log(reg2.exec(str));  // 返回第二个hello
console.log(reg2.lastIndex);  // 11

console.log(reg2.lastIndex);  // 11
console.log(reg2.exec(str));  // 返回第三个hello
console.log(reg2.lastIndex);  // 17

console.log(reg2.exec(str));  //返回 null

console.log(reg2.lastIndex);  // 0
console.log(reg2.exec(str));  // 返回第一个hello

注:lastIndex属性是对校验位置的纪录,一般配合修饰符g来使用,如上 当我们进行校验前lastIndex=0

1.不加修饰符 g 时,我们每次进行匹配校验后都会把lastIndex属性重置为0,也就是说我们每次匹配校验都是从头开始的

2.加上修饰符 g 时,当我们进行第一次匹配校验后,lastIndex属性就会纪录校验位置,再次匹配后lastIndex并不会置0,而是根据上次校验后的位置接着向下校验,然后更新lastIndex,直到全部校验结束后lastIndex才会重新置0

4.0 字符

4.1 字符集合

//表示123其中的一个
reg1 = /[123]/;

//...
reg2 = /[abc]/;

//...
reg3 = /[ABC]/;

//表示数字1到9其中的一位数
reg4 = /[1-9]/;

//表示英文字母a到z其中的一个
reg5 = /[a-z]/;

//表示英文字母A到Z其中的一个
reg6 = /[A-Z]/;

var str = 'hello123';
console.log(reg1.exec(str));

注:[ ]只表示一位字符

4.2 直接量字符

字符匹配
字母和数字字符自身
\oNull字符
\t制表符
\n换行符
\v垂直制表符
\f换页符
\r回车符

注:无特殊含义,记住就行了

4.3 边界符 ^ $ \b \B

//^在括号外 表示以什么开头
var reg1 = /^[0-9]/;

//^在括号里 表示取反 reg2表示除了0-9外的其他所有字符中的任意一个
var reg2 = /[^0-9]/;

//$表示以什么结尾
var reg3 = /[0-9]$/;

// ^ $ 结合使用 表示精确定位
var reg4 = /^123$/
//reg4表示只有123符合(123123不符合)

注:要区分^在[ ]里和外的区别

var str = 'Hello World Hello JavaScript';
var reg1 = /\bHello\b/g;
var reg2 = /\BScrip\B/g;
console.log(reg1.exec(str));
console.log(reg2.exec(str));

注:  /\bHello\b/表示从H开始到空格前结束,\B与\b相反,\B只能去取边界内人内容

4.4 字符

字符类含义
.匹配除换行符\n和回车符之外的任何单个字符,等效于[^\n\r]
\d匹配一个数字字符,等效于[0-9]
\D[^0-9]
\w匹配包括下划线的任何单个字符,包括A~Z,a~z,0~9和下划线"_",等效于[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\s匹配任何Unicode空白字符,包括空格、制表符、换页符等,等效于[\f\t\n\r]
\S[^\f\t\n\r]

 注:只是一个等效的替换,记住就行了

4.5 数量词

字符含义
*>=0次
+≥1 次
0或1次
{n}n 次
{n,}≥n 次
{n,m}n到m 次

例:

// * 允许出现0次或多次
var reg = new RegExp(/^a*$/);
console.log(reg.test("a")); // true
console.log(reg.test("")); // true

// {3} 允许重复3次
var reg1 = new RegExp(/^a{3}$/);
console.log(reg1.test("a")); // false
console.log(reg1.test("")); // false
console.log(reg1.test("aaa")); // true
console.log(reg1.test("aaaa")); // false

5.0 身份证号

// 不能以数字0开头,只能由数字组成,最后一位可能是x,X,数字
var reg = /^[1-9]\d{16}[xX\d]$/;
var str = "15232421114526997x";
var result = reg.exec(str);
console.log(result);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值