js-正则表达式

转义字符
\r 一行结束
\n 换行
\t 制表符

多行字符串
默认不允许字符串有多行
实现 在每一行的最后加上\ 将\后面的空格转义掉

正则表达式 RegExp 贪婪匹配原则
reg.test() 返回true
str.match() 返回匹配的结果
作用 匹配特殊字符或有特殊搭配原则的字符的最佳选择
两种创建方式
(1)直接量 推荐使用
var reg = /abc/ 正则表达式abc 两个//之间写表达式
var str = “abcd”
reg.test(str)
测试str中是否存在reg

var reg = /abc/i i => 忽略大小写
var reg = /abc/g g => 全局匹配 str.match(reg)
var reg = /abc/m m => 多行匹配

(2)new RegExp()
var reg = new RegExp(“abc”,“m”)

var reg = “/abc/”
var reg1 = new RegExp(reg)
reg 和 reg1 代表相同的规则 但不是相同的对象

var reg = “/abc/”
var reg1 = RegExp(reg)
不用new一个对象的话 reg 和 reg1完全一致

表达式
方括号[] 表示一位 里面表示的区间 只匹配一遍 不会返回去查找
[0-9] [a-z] [A-Z] [0-9A-Z] [cd]
^ 以什么开头 [^] 非
/(abc/bcd)/g 或运算 abc 或者bcd都会被匹配

元字符
. 表示任意字符 除了\r 和 \n
world \w === [0-9A-z_]
\W [^\w]
\d [0-9] 数字
\D [^\d] 非数字
\s [\t\n\r\v\f ] 制表符 换行符 结束符 垂直制表符 换页符 空白符 …
字符串真实存在 \t \n \r 空白符可以直接" "
\S [^\s]
\b 单词边界
\B 非单词边界
unicode
\u010000 - \u01ffff 前两位是层数
\u020000 - \u02ffff
\u100000 - \u10ffff 最后一层

量词
^n 以n开头
n$ 以n结尾
n+ 一到正无穷 /\w+/g
n* 0到正无穷 var reg = /\w*/g var str = “abc” str.match(reg) = [“abc”,""] 0的情况 考虑到空 但是能多不少
n? 0或1
n{X} X个
n{X,Y} x到y个
n{x, } x到正无穷

正则表达式的方法
reg.exec()
加上g lastIndex和exec()方法相配合 lastIndex控制匹配的位置 可手动修改 每次从lastIndex后面开始匹配 循环匹配
不加g lastindex不变 每次重头开始 lastIndex始终为0

/(\w)\1\1\1/g 四个一样的符合\w的字符
(\w) 一个子表达式 内容会挂到最后的打印结果上 console.log(reg.exec())
\n 反向引用第n个表达式的内容

match()函数 加g和不加g的区别 不加g只会返回匹配的结果 加g会有很多信息
search()函数 返回首次匹配到的位置 否则返回-1
split()函数 以正则表达式拆分
replace()函数 重要
str.replace(“a”,“b”) 没有匹配全局的能力 只会替换一个
str.replace("/a/g",“b”) 第二个参数必须是字符串
(1):可以引用反向表达式得到匹配内容 KaTeX parse error: Expected 'EOF', got '&' at position 15: 1 第一个反向表达式的内容 &̲2 第二个反向表达式的内容 (…,$1,$2,$3){
全局 第一个子表达式 第二个子表达式
retrun $2 + $2 + $1 + $1;
})

正向预查 正向断言
var str = “abaaaa” var reg = /a(?=b)/g (?b)是判断a的条件 不参与判断
非正向预查
var str = “abaaaa” var reg = /a(?=!b)/g 匹配a后面没有b的情况

贪婪匹配 和 非贪婪匹配
var reg = /a?/g 在表达式后面加上问号

1 000 000 000 => 1,000,000,000

var str = "10000000000"
var reg = /(?=(\B)(\d{3})+$)/g
匹配"" 正向预查 后面是3的倍数结尾 且不是边界
(\B) 空不是边界 
(\d{3}) 连续三个数字
+ 连续三个数字出现 1 到 正无穷次
$ 以连续三个数字 重复 1 到无数次 结尾
console.log(str.replace(reg,","))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值