js之正则表达式

4 篇文章 0 订阅

正则表达式可以说是js的一大利器,对字符串执行模式匹配

创建

直接量语法:

/pattern/attributes

创建 RegExp 对象的语法:

new RegExp(pattern, attributes);
修饰符
修饰符描述
i大小写不敏感匹配
g全局匹配
m多行匹配
元字符
元字符描述
\w查找单词字符(word) 相当于[a-zA-Z0-9]
\W查找非单词字符(non-word) 相当于 [^a-zA-Z0-9]
\d查找数字(digit) 相当于[0-9]
\D查找非数字(non-digit) 相当于 [^0-9]
\s查找空白字符 (white space)
\S查找非空白字符 (non-white space)
\b匹配单词边界 (word boundary)
\B匹配非单词边界 (non-word boundary)
\0查找NULl字符 (null (0x00))
\n查找换行符
\f查找分页符
\r查找回车符
\t查找制表符
\v查找垂直制表符
\xxx查找以八进制数 xxx规定的字符
\xdd查找以十六进制数 dd 规定的字符
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符

这里我们单独说下 \0 字符串的结束符是’\0’,或者NUL,当我们写这样两个字符串的时候:

var a = 'test'
var b = 'test\0'
var c = 'test'

a == c // true
a === c // true
a == b // false

a.match(/\0/) // 没有匹配
b.match(/\0/) // 有匹配

接下来我们再说下Unicode编码,在js中字符串和Unicode编码是可以互相转换的,下面我们来看个例子:

var str = '测试例子'
var char0 = str.charAt(0) // 获取字符
console.log(char0) // 测
var code = str.charCodeAt(0) // 数字编码值
console.log(code) // 27979
var str0 = String.fromCharCode(code) // 编码互转
console.log(str0) // 测
var code16 = code.toString(16); // 转为16进制数组
console.log(code16) // 6d4b
var ustr = "\\u"+code16 // 变成字面量表示法
console.log(ustr) // \u6d4b
零宽断言

所谓零宽断言,实际上用语法指定匹配时的起点或终点。或者说,是一种扩展通配方式。零宽断言本意:A表达式与B表达式是零宽的,即没有任何间隔的,同时,断言或确认某一关系为真,即:B前面是A或不是A为真;或者,A后面是B或不是B为真。

表达式结构描述
(?=exp)匹配exp前面的位置,即某表达式后面是exp
(?<=exp)匹配exp后面的位置,即某表达式前面面是exp
(?!exp)匹配后面跟的不是exp的位置,即某表达式后面不是exp
(?<!exp)匹配前面不是exp的位置,即某表达式前面不是exp

这里推荐一个正则表达式的一个在线工具 REGEXPER

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值