正则表达式-学习笔记

正则表达式

https://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

补充知识:
转义字符“\”

\n  回车 换行
\r  行结束符
\t tab

多行字符串
在这里插入图片描述

  • RegExp 对象
    正则表达式的作用:匹配特殊字符或有特殊搭配原则的字符的最佳选项
    两种创建方式
  1. 直接量
			var  reg = /abc/ 
			// 正则表达式bac
  1. new RegExp();
			var reg = new RegExp("abc");

注意:
var reg = /abce/m;
var reg1 = new RegExp(reg); //返回的是新的一个正则表达式
var reg2 = RegExp(reg); // 不加new返回的是一个引用

  • 属性:
  1. i :ignorecase忽视大小写
  2. g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
		var reg = /ab/g;
        var str = "abababababab";
        //str.match(reg);
        //(6) ["ab", "ab", "ab", "ab", "ab", "ab"]
  1. m:多行匹配
		var reg = /^a/gm;   //  以a为开头的字符串 “^”
        var str = "abababab\nabab";
        str.match(reg);
        // (2) ["a", "a"]
  • 方法:
    reg.test()
    str.math()’

  • 表达式

方括号 :一个 [ ] 是一个表达式,代表1位,里面是他的区间

[abc] 查找方括号之间的任何字符。

	  var reg = /[1234567890][1234567890][1234567890]/g
       var str = "123dsviul9745gdh456"
       /*
        str.match(reg)
        (3) ["123", "974", "456"]
       */
       

[^]: ^ 放在里面表示“非”

(red|blue|green) 查找任何指定的选项。

var reg = /(abc|bcd)/g; //第一1位匹配abc或bcd
  • 元字符
\w 就是word
\w === [0-9A-z_]
\W === [^\w]

\d === [0-9];
\D === [^d];

\s === [\t\n\r\v\f ]
\S === [^s];

\b 单词边界
\B 非单词边界

\n	查找换行符。
\f	查找换页符。
\r	查找回车符。
\t	查找制表符。

var reg= /\tc/g
var str = "_abc\tcde"
//必需是真是存在的/t

\v	查找垂直制表符。

\uxxxx	查找以十六进制数 xxxx 规定的 Unicode 字符。(可以匹配汉字)

在这里插入图片描述

匹配所有

var reg= /[\d\D]/g;

查找单个字符,除了换行和行结束符。

. ===  [^\r\n]
  • 量词
    n+ {1,}
    n* {0,}
    n? {0,1}
    n{X} {x}
    n{X,Y} {x,y}
    n{X,} {x,}
检验一个字符串两端是否含有数字
var reg = /^\d|\d$/g;

检验一个字符串两端是否都有数字
var reg = /^\d[\s\S]*\d$/g;
  • RegExp 对象方法

compile 编译正则表达式。
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。

在这里插入图片描述
lastindex :下一个匹配的位置

	 // 匹配xxxx
    var reg = /(\w)\1\1\1/g  // \1反向引用,多次匹配前面的表达式
    
    // 匹配aabb
    var reg = /(\w)\1(\w)\2/g  

在这里插入图片描述

str.match(reg);
如果表达式中没有“g”显示详细的匹配信息,如上图所示。如果有“g”只显示匹配的个数
str.search(reg);
返回匹配的位置,如果没有匹配到就返回-1
str.replace()

		var str = "abcdedfa";
		var reg = /a/g
		str.replace("a","b"); //只能返回一个
		str.replace(reg,"b"); //匹配所有
		// 将aabb变为bbaa
		var str = "aabb"
		var reg = /(\w)\1(\w)\2/g  
		console.log(str.replace(reg,'$2$2$1$1'));
		
		console.log(str.replace(reg,function($,$1,$2){
		
		    return $2+$2+$1+$1;
		}));

toUpperCase(); //变为大写
toLowerCase(); //变为小写

		//将-word变为小驼峰式
        var str = "the-first-name"
        var reg = /-(\w)/g
        console.log(str.replace(reg,function($,$1){
            return $1.toUpperCase();
        }))

正向欲查 正向断言

		//正向欲查 正向断言
        var str = "abaaaa";
        var reg = /a(?=b)/g //筛选出a之后有b的那个a
         var reg = /a(?!b)/g //筛选出a之后没有b的那个a
        //str.match(reg)   ["a"]

在“+”……之后加上“?”就变成了非贪婪匹配

		//去重
		var str = "aaaaaaaaaabbbbbccc"
        var reg = /(\w)\1*/g
        console.log(str.replace(reg,"$1"));
		var str = "100000000" //变为100,000,000
        var reg = /(?=(\B)(\d{3})+$)/g  //(\d{3})+ 三的倍数个
        console.log(str.replace(reg,"."));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值