依据 B 站小野森森老师的正则表达式的课程整顿的笔记
课程链接
本义
本义符号和转义字符
非凡转义字符
n 换行
r 回车
t 制表符 -> tab 键 4 个空格
字符串换行
办法三: 能够用反引号 \` 定义多行字符串
正则表达式
RegExp = regular expression
初体验
实例化形式
对象间接量
如果要应用变量, 则必须是用实例化形式
留神
修饰符 gim
表达式[]
[]
间断三位每一位字符是什么
区间写法
^ 符号
| 或
元字符
元字符是正则应用的转义字符
w W
d D
s S
匹配一个空白字符
b B
.
能够匹配除了回车 r 和换行 n 的所有字符
量词
正则匹配的准则:
字符串从左到右, 顺次先匹配多, 再匹配少, 如果一旦匹配上就不回头匹配.
贪心匹配准则: 能匹配上多个, 绝不匹配少个
n+
{1, 正无穷}
n*
{0, 正无穷}
* 号就是匹配 n 这个范畴内的任意字符所呈现的 0 次或屡次的字符串,
先匹配屡次的, 匹配完屡次的之后, 空字符算是 0 次, 所以也能够.
n?
{0, 1}
n{x,y}
正则表达式中不要乱写空格
y 不写 默认{1, 正无穷} === n+
x=0,y 不写 默认{0, 正无穷} === n*
^n
匹配任何以 n 结尾的字符串, 这个例子的后果错了, 应该是[‘ab’, ‘ab’]
n$
匹配任何以 n 结尾的字符串,
问题
查看字符串是否以 abcd 结尾和以 abcd 结尾
查看字符串是否以 abcd 结尾或以 abcd 结尾
查看字符串是否以 abcd 结尾和以 abcd 结尾 并且两头是数字
reg=/^abcd[d]+abcd$/ 也能够
匹配以 138 结尾的 11 位手机号码
a(?=n)
匹配前面紧接着指定字符串 n 的字符串 a, 叫 正向预查
a(?!n)
匹配前面紧接着的不是指定字符串 n 的字符串 a, 也叫 正向预查
xxxx xxyy
子表达式
(a) 括号里面包着的是子表达式
子表达式有记忆性能, 前面紧挨着的反向援用都会认为是匹配同一个字符
反向援用
1 指的是你反向援用第 1 个子表达式
n 指的是你反向援用第 n 个子表达式
xxyy
(?:n)
str.match 会把子表达式也捕捉进去
捕捉分组
a , b, c 三个子表达式都捕捉
不捕捉分组
(?:a) 不让捕捉这个子表达式
正则对象属性
正则对象办法
reg.test(str)
reg.exec()
这个办法是机械式的循环
个性
须要晓得的景象
输入的数组中的 index 属性和 reg.lastIndex 属性的值保持一致, 并且能够通过扭转 reg.lastIndex 的值来扭转 index 的值, 即批改匹配的地位
然而如果把 lastIndex 的值批改为不是 3 的倍数, 下一个 index 会变成大于 lastIndex 值的最小的 3 的倍数:
此时, 在执行一次 reg.exec(str), lastIndex 会主动跟 index 同步变为 9
str.match(reg)
手机号校验
出生日期校验
match 与 exec 的区别
str.split(reg)
字符串宰割
String 结构的对象的办法
str.toUpperCase()
str.toLowerCase()
str.toLocaleUpperCase()
str.toLocaleLowerCase()
针对一些比拟非凡的语言, 比方土耳其语等语言中有非凡的大小写字母, 这些语言的大小写转化要应用 locale
针对英文字母, 加 locale 与否都能实现大小写转换性能
str.charAt()
str.charCodeAt()
str.fromCharCode()
str.substr()
前闭合 后长度
str.substring()
前闭后开
valueOf 和 toString 的比拟
1、toString 字符串 valueOf 返回本来的值
2、Date:toString 示意工夫的特有的字符串 value0f 13 位毫秒工夫戳
3、数组:toString 数组元素用, 宰割的字符串 value0f 数组本来的值
4、对象:toString 对象的类型字符串示意‘[object Object] ‘ value0f 对象本来的值
5、toString function 通过 [native code] 辨别 JS 内置函数和自定义函数
6、toString 接管一个参数 - 基数 radix value0f 没有参数
封装工具类函数
第一种
第二种
贪心模式和非贪心模式
默认是贪心模式, 加一个? 变成非贪心模式
例子 1
例子 2
replace
他自身不具备全局匹配的能力
第一个参数: 要替换的字符串
第二个参数: 替换成的字符串
xxyy -> yyxx
办法一:
办法二:
js-plus-plus -> jsPlusPlus
肯定要打括号才是子表达式
jsPlusPlus -> js\_plus\_plus
aabbcc -> a$b$c$
如果要用 $ 符号, 应该写两个: $$
下面可看成 $1 $$ $2 $$ $3 $$
呈现 0 次或屡次
1000000000000 -> 1000,000,000,000
提醒: 把空换成逗号
匹配前面跟着的是 1 或多个 000 连着的 并且字符串是以他们结尾的 空, 把这个空变成逗号
模板替换
双大括号替换
肯定要记得写子表达式
模板替换(重要)
输入框不让输出 空格
至多 6 位
验证邮箱
留神点
语法当中存在的符号肯定要对它进行本义, 不然会报语法错误