正则表达式内容梳理

#正则、(RegExp) ####正则表达式是一个描述字符模式的对象,在js中,RegExp表示正则对象。正则的功能十分强大,能够大幅度简化代码。 ##正则的功能 正泽德功能能够匹配检索大批量数据。切使用范围很是普遍html

  • 验证用户数据(登录注册)
  • 采集数据/爬虫 (爬数据)
  • 符号匹配 (检索)
  • 验证网页信息(匹配) ###建立正则表达式
script  
var rel = /abc/ //建立一个正则表达式给变量
var rel2 = new RegExp(/abc/)构建函数创造正则
//构建函数的第二种写法 
var rel2-1 = new RegExp(”abc“)
//等同于直接写入正则
var rel3 = RegExp(”hell “)//将一个字符串转化为正则
转换函数
script

####正则表达式的三种写法没有固定要求,可是若是你眼睛不瞎坑定选择第一种。 ###基础语法 demo:正则表达式

var str = "a1bcd"
var rel = /\d/g //\d为匹配数字
console.log(rel.test(str)) ture
//测试字符串里是否存在知足正则的内容,有为ture 没有为false

以上代码中,用来测试结果,一种很是常见的写法。 demo:数组

var a = "abcgfjkl00";
var rle = /b/ //检索b
console.log(a.search(rle))
//检索知足正则条件的值在字符串中的索引值

以上代码用了search方法,用域检索索引值。 demo:函数

var str = "123 456 789 789 asd asd ";
var rel = /123/ 
console.log(str.match(re));匹配 match
//输出的是123 ,由于只匹配了一次想要所有匹配须要在正则后面加g
var rel2 = /123/g //所有配

以上demo调用的match方法,match中文意思是匹配配对,用次方法配合正则的g转义符能够检索全部哦符合正则条件的值。 ###正则的配合 使用正则配合一些方法能够达成一些很是强大的功能测试

  • match() //此方法用于匹配,正则中用来在字符串中寻找知足正则条件的参数。
  • replace ()//找到一个符合正则的内容而且用新的自定义内容进行替换
  • substring() // 此方法同于提取字符串中介于方法内提供的两个值之间的字符
  • search() //和正则匹配时能够找到与正则表达式相匹配的字符的索引值。
  • test() //测试 用于判断一个字符串里面是否有匹配正则结果的值
  • RegExp() //正则类型转换;
  • split () //此方法将字符串从指定索引值出分割,并指定分割后的长度,
  • charAt () //该方法可指定一个索引值并根据索引值获取字符串中相对应的值 ##正则转义字符 正则中存在着许多字符,有些字符在解析以后(转义)对正则的匹配的类型有很是大的帮助。 ####经常使用的转义字符
  • \d 匹配数字
  • \w 匹配数字字母下划线
  • \s 匹配全部空白字符
  • \D 匹配全部非数字
  • \S 匹配全部非数字字母下划线
  • \S 匹配全部可见字符
  • . 匹配全部 ###match 匹配
var str = "1231asdasd23"
var rel = / \d+/;
console.log (str.match(rel));
//结果只找到了一个数字

字符串中虽然存在着符合正则条件的值可是只输出了一个,此时若是在正则后面加一个g就能够做用于整个字符串。code

var rel = /d/g

此经过修饰符g已经拿到了全部的数字htm

var rel = /\d+/g
var str = "123 123 456"
//此时修饰符+号能够匹配任意长度的值
输出
console.log(str.match(rel))

虽然g修饰符能够帮咱们找出来全部知足要求的值,可是若是咱们要在数组里面找到一串值,就只能去匹配字符串的长度来寻找,+能够匹配任意长度的值。 ###正则的其余写法 虽然有许多修饰符的存在可让处理正则表达式更加方便,若是咱们须要自定义检索范围尽心配对的话,仍是须要使用自定义检索范围的写法对象

  • /{n,0}/ //第一个值是出现n次,第二个值是这个值的阈值
  • /{n}/ //只写一个值说明出现的最小次数等于最大次数。 ###replace转换网页爬去的数据
var rel = /<.+>g/

由于html标签名长度和标签类型并不固定因此使用.能够匹配全部的标签名,使用+能够匹配全部长度的标签。 ##贪婪模式 贪婪模式是由于在js中,正则表达式会在匹配成功的前提下会尽量的夺取匹配数据,而非贪婪模式,是在知足配对的条件下尽量少的去匹配数据。索引

var rel = /^\w+@[a-z0-9]+\.[a-z]{2,3}$/
//^上尖括号表示开始,$表示结束。将整个正则表达式圈起来就不会再发生贪婪模式的现象。

##中文匹配 正则当中汉字也是能够进行配对的,配对的范围是计算机中打出的第一个汉字到最后一个汉字 第一个是一最后一个是龥yu。 正则写法是[\u2e80-\u9fff]这个表明了汉字的范围; ##模式单元 ###原子 正则当中,咱们输入的每个字符都是一个原子,原子是最基本的组成部分,也是最小的单位, ###改变优先级 在正则当中()被称为模式单元能够改变优先级。ip

console.log("jack".match(/jack|rose/)); // jack

模式单元写法:

console.log('jack'.match(/jac(k|r)ose/))

通常来说上面的代码是不会匹配到内容,实际上正确的会被匹配到的内容应该是jackose或者jacrose ###将多个原子视为一个原子

console.log("dds".match(/dds/))
//显然返回的是dds

若是须要匹配多个dds就能够将多个原子视为一个原子 demo:

console.logconsole.log("ddsddsdds".match(/(dds){1,3}/));// 
//返回的shiddsddsdds

###存储内容到内存中 正则能够将内容村粗到内容中,而且能够经过索引值对内存中的数据进行访问,

console.log('aaa'.match(/aaa/)); // aaa
// 咱们若是改成下面这种写法
console.log('aaa'.match(/(a)(a)(a)/)); // 0:aaa  1:a 2:a  3:a 内容被存储到了内存之中

由于内存容量能省则省,因此当想把数据从内存中移除的话能够经过"?;"的形式来一处。 demo:

console.log('aaa'.match(/(?:a)(a)(a)/));// 0:aaa  1:a 2:a
相关文章
相关标签/搜索