实践中的正则
学习正则还是很苦逼的,不过简单的还是要会写,复杂的还是很难滴,不过至少学会要会看懂大牛和常用的正则表达式就了。
1、姓名
const name = new RegExp(/^([A-Za-z]|[\u00B7]|[\u4E00-\u9FA5]|[·])*$/).test(value); //只可以为汉字、字母、符号(·) const patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; // 只能输入5-20个以字母开头、可带数字、“_”、“.”的字串2、密码
const patrn=/^(\w){6,20}$/; // 只能输入6-20个字母、数字、下划线
const patrn=/^(\W){6,20}$/; // 除了字母、数字、下划线的其他组合
3、手机号码
const resPhone = new RegExp(/^(1)\d{10}$/).test(value) // 首位是1的11位数字组成
const patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; // 可以“+”开头,除数字外,可含有“-”
const patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; 4、纯数字和有数字
const value = '122345s'
new RegExp(/[0-9]/g).test(value) // 有数字就可以
new RegExp(/^[0-9]$/).test(value) // 只能是纯数字5、邮箱
const resMail = new RegExp(/^([0-9a-zA-Z._]|-)+@{1}([0-9a-zA-Z._]|-)+\.{1}([0-9a-zA-Z._]|-)+$/);6、归类汇总
元字符:(.,\w,\W,\d,\D,\s,/S,\b,\B^,$,)
\w 匹配一个可以组成单词的字符(含数字),包括下划线
\W 匹配除了字母、数字、下划线
\d 匹配一个字数字符 /\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
x|y 匹配x或y
^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头 $ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾
[\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
分组符([],(),{});
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
(x) 匹配x保存x在名为$1...$9的变量中
[xyz] 匹配这个集合中的任一一个字符
[^xyz] 不匹配这个集合中的任何一个字符
修饰符(i,g,m);
g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了
i 忽略大小写量词(*,?,+,-,{n,m},?=n,?!=n);
* 匹配前面元字符0次或多次
+ 匹配前面元字符1次或多次
? 匹配前面元字符0次或1次
7、RegExp对象的函数常用的有2个
new RegExp().exec() 返回一个数组,存放匹配的结果。如果未找到匹配,则返回null。
new RegExp().test() 返回 true,否则返回 false。
8、String对象的函数常用的2个
match():stringObject.match(searchvalue | regexp)
const request = 'https://luckyuat.mobile.taikang.com/lucky/register/accredit/'
console.log(request.match('/lucky/register')) // 生成对应数组
console.log(request.match('/lucky/page')) // null
使用场景,在全局配置请求接口的时候,进行接口参数统一管理(比如统一加上请求头等)"http:/www.baidu.com/?a=1&b=2".match(/([^?&=]+)=([^?&=]*)/g); //["a=1", "b=2"]
/([^?&=]+)=([^?&=]*)/g
我这样解释:全部搜索出现一次或者多次由不包括?&=集合中的任何一个字符所组成的一个或者多个等值组合
replace(): stringObject.replace(regexp/substr,replacement)
const eventValue = '你好。世界'
const value = eventValue.replace(/[.。,,、]/g, '·') // 进行替换 (你好·世界)督促自我,成长每一步。。。