正则表达式

正则表达式:

创建正则表达式

1、字面量创建正则表达式:用 / / 包裹正则表达式的语句

let hd = "baidu.com";
let a = 'u';
console.log(/u/.test(hd));
// eval():把字符串解析为js语句
console.log(eval(`/${a}/`).test(hd)); 

2、使用对象创建正则表达式:

let hd = "baidu.com";
let a = 'u';
let reg1 = new RegExp('u','g');   // 表示创建了一个正则表达式: /u/g
let reg2 = new RegExp(a,'g');
console.log(reg2.test(hd)); 
let reg3 = new RegExp('uhh','g');   // ==>  /uhh/g

或匹配

1、选择符:
(1)或 :| 检测的不是|左右两边的单个字符,而是整个字符

2、[]–元子表 ()–元子组
[]也有或的意思,非匹配完整的,[] 匹配单个字符

let reg2 = /(12|3456)/;  // 表示12是个整体或者3456是个整体

转义

1、正则表达式中的转义:

  • /d 表示匹配数字,+表示匹配多个数字
    所以也可以把 /d理解为转义后的
  • [a-z]{3,6} // 表示匹配3到6位的a-z之间的字母
    [a-z] // 表示只匹配一个a-z之间的字母
  • .有两层含义:优先级较高的含义----除换行符外任何字符;较低含义----普通字符点
  • 转义:由优先级较高的含义变为优先级较低的含义
let price = 23.34;
 
console.log(/\d+\.\d+/.test(price));
let reg = new RegExp('\d+\.\d+');  //  ==> /d+.d+/ 
// 因为字符串中的內容无论怎么转义都是低级含义 
// 想要转义成功则多加一个斜杠:
let reg2 = new RegExp('\\d+\\.\\d+');  // ==>  /\d+\.\d+/ */

test、exec、match的区别

1、正则表达式中test、exec、match的区别:

  • test、exec是RegExp对象的方法,match是String对象的方法
  • test:test 返回 Boolean,查找对应的字符串中是否存在模式。var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(reg.test(str));
  • exec:exec 查找并返回当前的匹配结果,并以数组的形式返回。 var str = "1a1b1c"; var reg = new RegExp("1.", ""); var arr = reg.exec(str);
  • match:match 是 String 对象的一个方法。var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(str.match(reg));

边界约束

1、字符边界约束:
^限定起始边界 ,$限定结束边界

let zxt = '1ff4gt';
console.log(/\d/.test(zxt));  // 表示只要字符串中包含数字就匹配成功,因为左右都没有限定
console.log(/^\d$/.test(zxt)); // 表示以数字开始以数字结束:

数值与空白元字符

1、数值与空白元字符:
+元字符:正则表达式中的最小单元字符,表示一类字符中的一个
+\s表示匹配空白:如换行符、制表符、分页符、空格 ,\S表示除了空白
+\d表示匹配数字,\D表示除了数字

  • 新一层理解:加上g就是一直扫描到结尾,不加就是第一次匹配成功后碰到不匹配的字符就结束;加上s是单行模式

  • [] 元子表表示里面有什么就要什么:不在乎顺序

let zxt1 = 'x200xx 2';

console.log(zxt1.match(/[\d\w]/g));  // ==>  ["x", "2", "0", "0", "x", "x", "2"]
console.log(zxt1.match(/[\d\w]+/g)); // ==> ["x200xx", "2"]
  • 元子表中加上^的含义:/[^\d\w]/表示除了^之后的都要
let zxt2 = 'x200xx李四2';
console.log(zxt2.match(/[^\d\w]/g)); // ==> ["李", "四"]
console.log(zxt2.match(/[^\d\w]+/g)); // ==> ["李四"]
  • 新一层理解:+表示匹配一个或多个
  • 新一层理解:没有加上元子表的时候按顺序匹配
如:
let zxt1 = 'x200xx 2';
console.log(zxt1.match(/\d\w/g)); // ==> ["20","0x"]
扫描到末位只有 200x 符合这个 \d\w 顺序

w和W元字符、点元字符

1、w和W元字符
/w :表示匹配字母、数字、下划线

2、点元子符的使用(范围更广):表示匹配除了换行符外的所有字符
单纯匹配 . 需要转义

let zxt = `
     hhhh
     jjjj
`
console.log(zxt.match(/.+/));  // 只匹配到了 hhhh ,因为没有限制开头,但是碰到换行符就停止了
console.log(zxt.match(/.+/s)); // 加上`s`视为单行匹配模式
nsole.log(zxt.match(/.+/));  // 只匹配到了 hhhh ,因为没有限制开头,但是碰到换行符就停止了
console.log(zxt.match(/.+/s)); // 加上`s`视为单行匹配模式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值