今天学习了正则,前来总结一下: (今天第一次写哈哈哈,还挺鸡冻٩(๑>◡<๑)۶)
正则的定义:
是专门用来处理字符串的一种技术(获取 匹配)
创造正则的两种方式:
- 字面量
- 构造函数
let reg = / werw/
let reg = new RegExp
元字符:
定义:
双斜杠里面的东西 我们称为元字符
量词元字符 :
? * +
修饰符
其他(普通的 和 特殊的)
\d
表示一个数字字符
\D
取非 除了数字以外的任意字符
\w
数字 字母 下划线_
\W
取非
\b
匹配一个单词的边界
量词:
+ * ? {n} {,n} {n,m}
用在要修饰的那个字符的后面 代表量词前面的那个字符可以出现的次数
()
在匹配的时候可以提升优先级
^
代表以什么开头
$
代表以什么结尾
[a-z]
小写字母 a到z
\
转义, 把那些正则当当中有特殊含义的字符 转义成没有特殊含义的普通字符串
.
代表了除了换行以外的任意字符 点本身用.
[^a-z]
取非 除了小写字母以外的任意字符
[a-zA-Z0-9]
test 是正则类的原型上的方法
JSON.stringify(yy);//转成字符串
JSON.parse(yy);//转成对象
let reg1 = /\d/
let reg2 = /\d?/
\d 出现0-1次 就是\d可有可无
let reg3 = /\d*/
\d 出现1-多次
let reg4 = /\d+/
\d 出现0-多次
let str = 'zhufeng';
let reg = /^zhufeng/
以z开头 后面是hufeng
let reg = /zhufeng$/
以g结尾 前面是zhufen
let reg = /^zhufeng$/
以z开头 以g结尾 前面是hufen
这里是一个需求:手机号 第二位只能是35789 //以1开头 后面这个一位是35789中的任意一个,后面是9个数字结尾
let reg = /^1[35789]\d{9}$/
let reg = /[(zhu)]/
或者 ( 或者z 或者h 或者u 或者 )
- et reg = /[xy]/等价 let reg = /x|y/
let reg = /(zhu)|(feng)/
let reg = /z|food/ //zood food
let reg = /[zf]ood/ //zood food
let reg = /[[zf]ood/ //zood food [ood
let reg = /[z|f]ood/ //zood food |ood
let reg1 = /hello/
let reg2 = /q\d?hello/
前面是q q后面要不是也没有 要不就是一个数字 在后面必须是hello
let reg3 = /q\d*hello/
前面是q q后面要不啥也没有 要不就是一到多个数字 在后面必须是hello
let reg4 = /q\d+hello/
let reg4 = /q\d{3}hello/
前面是q q后面只能是3个数字 在后面必须是hello
let reg4 = /q\d{3,}hello/
前面是q q后面最少是3个数字 在后面必须是hello
let reg4 = /q\d{3,5}hello/
前面是q q后面最少是3个,最多5个数字 在后面必须是hello
let reg4 = /q\d{0,10}hello/
前面是q q后面最多10个数字 在后面必须是hello
let reg1 = /(zhufeng)+/
()在匹配的时候可以提升优先级
let reg2 = /q\d?hello/
\d 出现0-1次 就是\d可有可无
let reg3 = /\d+/
\d 出现1-多次
let reg4 = /\d*/
\d 出现0-多次
let phoneReg = /^(1[89])|([2-5]\d)|(6[0-5])$/;
上面的正则有三个规则(满足三者之一就可以,所以有时需要再在外面整体加一个括号):
1)以1开头后边是8或者9 后面就无所谓了
2)字符串中 只要包含20到59中的数字即可
3)字符串只是以 60到65的数字结尾的即可
/^([+-]?(([1-9]\d+)|(\d))|(.\d+)?)$/ 拆分解析:
/(([1-9]\d+)|(\d))/
整数部分是分为一位数和多位数的一位数 没有要求 \d就可以 多位数要求 0不能开头[1-9]\d+
/(.\d+)?/
小数部分 有点必有后面的数字 也就是说 .xx是一个整体的存在 要有都有,要是没有都没有
/([+-]?/
符号部分 正负号 可有可无