根据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 c$
如果要用$符号,应该写两个:
上面可看成 $1 $$ $2 $$ $3
出现0次或多次
1000000000000 -> 1000,000,000,000
提示: 把空换成逗号
匹配后面跟着的是1或多个 000 连着的 并且字符串是以他们结尾的 空, 把这个空变成逗号
模板替换
双大括号替换
一定要记得写子表达式
模板替换(重要)
输入框不让输入 空格
至少6位
验证邮箱
注意点
语法当中存在的符号一定要对它进行转义, 不然会报语法错误
文章来源: segmentfault.com,作者:dramaqueen,版权归原作者所有,如需转载,请联系作者。
原文链接:segmentfault.com/a/1190000039347778