正则表达式的简单理解

正则表达式的简单理解

正则表达式概念:一个有规则的表达式
简单的说就是一个用于查找的通配符

正则表达式对象

-> js 正则表达式对象 就是 由 正则表达式创建的对象, 该对象可以进行 匹配, 提取 和 替换.
创建正则表达式对象

  1. 构造函数
    var regex = new RegExp( 正则表达式字符串[, 匹配模式] );
  2. 字面量
    var regex = /正则表达式/;
 //创建正则对象的两种方法
        var reg = new RegExp()
        // console.dir(reg);
        var regE = /\k/
        // console.log(regE);
        // var str = 'abc'
        //判断字符串中是否有符合的字符  语法:正则对象.test(字符串)  返回值boolean
        // console.log(regE.test(str));
        var str = 'abcdefghijklmnopqrstuvwsyz'
        //寻找符合的字符,返回boolean
        var bl = str.includes('op')
        console.log(bl);
        //寻找符合的字符,返回符合的字符的下标
        var c = str.search('op')
        console.log(c)

使用正则表达式进行匹配

语法:
正则对象.test( 字符串 ) -> boolean
如果参数字符串中含有 符合 正则匹配的 字符串, 就返回 true, 否则返回 false

例如:reg.test(str)

 		var reg = /[sr]/
        //转义字符 \(\)  \{\}  \. \\
        // var reg = /\(1\)/
        var str = 'string'
        console.log(reg.test(str));

基本元字符

		//  . 表示任意一个非换行字符
        //  []表示一个字符,出现在[]中的字符
        //  | 或者
        // var reg = /./
        // var reg = /[s]/
        var reg = /[sr]/
        //转义字符 \(\)  \{\}  \. \\
        // var reg = /\(1\)/
        var str = 'string'
        console.log(reg.test(str));

		//如果要显示表示阿拉伯数字0到9,可以简写为
		[0-9]
		//如果要显示表示大写英文字母A到Z,可以简写为
		[A-Z]
		//如果要显示表示小写英文字母a到z,可以简写为
		[a-z]

		//亦可以合并来写
		[0-9a-zA-Z] //表示限定字符为阿拉伯数字0到9,小写英文字母a到z,大写英文字母A到Z

		//要注意写成[9-0][z-a][Z-A]这种逆序的写法是错误的

. 任意的一个字符. 没有任何限制
[] 是出现在[]中的一个字符. 认为是 . 的限制级版本[abc]:等同于:a 或者 b 或者 c
| 可以认为是 允许使用多个字符的 匹配

限定元字符

		// /字符(串)*/	紧跟前面的字符出现0次或者多次
        // var reg = /123*/
        // /字符(串)+/	紧跟前面的字符出现1次或者多次
        // var reg = /123+/
        // /字符(串)?/	紧跟前面的字符出现0次或者1次
        // var reg = /123?/
        // /字符(串){number}/	紧跟前面的字符连着出现{number}次
        // var reg = /1{2}/
        // /字符(串){number,}/	紧跟前面的字符至少连着出现{number,}次
        // var reg = /1{2,}/
        // /字符(串){number1,number2}/	紧跟前面的字符连着出现{number1,number2}次,至少连着出现number1次,可以出现更多次                     
		var reg = /1{2,3}/

着重记忆:限定元字符都是限定紧跟着的字符,若是不是连续出现的字符,虽然也出现了限定的次数判断式任然会返回false值

首尾正则表达式

 		//  /^字符/ 以该字符开头
        //  /字符$/ 以该字符结尾
        // var reg = /^a+$/ 意思为限定字符得全部为a,则之个字符串得全部是a组成的
        var reg = /^1[3578]{1}[0-9]{9}/ //限定以1开头
        var str = '15345678910'
        console.log(reg.test(str));
		var regE = /b$/ //限定以b结尾
        console.log(regE.test('aaab'))

简写元字符

\s 空白字符, 包括空格, tab, 回车换行等

\S 非空白字符

js 中常常使用 [\s\S] 表示任意字符

\w 表示字符, 包含字母, 数字, 下划线.

\W 非字符

\d 数字

\D 非数字

		//  \s空白字符,包括空格、tab、回车换行等
        // \S非-----
        //  \w表示字符
        //   \W--非字符,例如键盘上的回车等
        //  \d数字
        // \D非--
        var str = 'martin@163.com'
        // 我有一个邮箱, 是 , 还有 abc@126.com, 和 1234567@qq.com
        var reg = /\w/
        console.log(reg.test(str));

提取

使用正则表达式可以进行匹配, 使用 exec 可以将匹配到的数据提取出来

语法: 正则表达式对象.exec( 字符串 ) -> 封装成数组

reg.exec(str)最后筛选不到返回null

var str = 'abc123def456hij789klmn'
var reg = /\d+/g
var arr
while (arr = reg.exec(str)) {
            console.log(arr);
        }
console.log(arr);

贪婪模式

凡是在正则表达式中, 涉及到次数限定的, 一般默认都是尽可能的多匹配.

取消贪婪模式. 在次数限定符后面加上 ?

注意: 贪婪模式性能会略高于非贪婪模式, 所以开发的时候. 一般不考虑贪婪的问题
只有代码匹配结果出现问题了, 一般一次多匹配了, 才会取消贪婪

var str = '<div>123</div><div>456</div>78<span>9</span>0';
//反向引用            调用之前的小括号中的部分
var reg = /<(\w+)>.*?<\/\1>/g
var arr
while (arr = reg.exec(str)) {
         console.log(arr);
      }    

否定元字符

var reg = /[^abc]/ //不是以a或b或c开头的字符

总结

正则表达式是种严谨的用于查找的通配符,如果简单使用也要多多记忆基本的元字符,其中尤其要多多注意 () 元字符的作用,避免达不到预想的效果,而 | 或元字符优先级最低,使用时也要多多注意

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值