zoukankan      html  css  js  c++  java
  • 正则表达式内容梳理

    正则、(RegExp)

    正则表达式是一个描述字符模式的对象,在js中,RegExp表示正则对象。正则的功能十分强大,可以大幅度简化代码。

    正则的功能

    正泽德功能可以匹配检索大批量数据。切使用范围非常广泛

    • 验证用户数据(登陆注册)
    • 采集数据/爬虫 (爬数据)
    • 符号匹配 (检索)
    • 验证网页信息(匹配)

    创建正则表达式

    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就可以作用于整个字符串。

    var rel = /d/g
    

    此通过修饰符g已经拿到了所有的数字

    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]这个代表了汉字的范围;

    模式单元

    原子

    正则当中,我们输入的每一个字符都是一个原子,原子是最基本的组成部分,也是最小的单位,

    改变优先级

    在正则当中()被称为模式单元可以改变优先级。

    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
    
  • 相关阅读:
    正则化--L1正则化(稀疏性正则化)
    机器学习分类算法之随机森林
    机器学习分类算法之逻辑回归
    机器学习分类算法之朴素贝叶斯
    机器学习分类算法之K近邻(K-Nearest Neighbor)
    机器学习之特征工程
    uwsgi支持http长链接
    机器学习之数据预处理
    机器学习之场景解析
    机器学习之基本概念
  • 原文地址:https://www.cnblogs.com/wangjiahui/p/10873149.html
Copyright © 2011-2022 走看看