正则表达式--实用篇

验证是否为有效数字

/*
*规则分析:
*1.可能出现 + - 号,也可能不出现 [+-]?
*2.一位0-9都可以,多位首位不能是0 (\d|([1-9]\d+))
*3.小数部分可能有可能没有,一旦有后面必须有小数点+数字 (\.\d+)?
*/
let reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;

验证密码

//=> 数字、字母、下划线
//=> 6~16位
let val = 'sfji_83A82';
let reg = /^\w{6,16}$/;
let flag = reg.test(val)
console.log(flag); //=> true

验证姓名

/*
*1.汉字		/^[\u4E00-\U9FA5]$/
*2.名字长度	   2~10位
*3.可能有译名   ·汉字	(·[\u4E00-\U9FA5]{2,10}){0,2}
*/
let reg = /^[\u4E00-\U9FA5]{2,10}(·[\u4E00-\U9FA5]{2,10}){0,2}$/

验证邮箱

let reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

//=> \w+((-\w+)|(\.\w+))*
//=> 1.开头是数字字母下划线 (1到多位)
//=> 2.还可以是 -数字字母下划线 或者 .数字字母下划线,整体零到多次
//=> 邮箱的名字由“数字、字母、下划线、-、.”几部分组成,但是-/.不能连续出现也不能作为开始
//=> @[A-Za-z0-9]+
//=> 1.@后面紧跟着:数字、字母 (1-多位)

//=> ((\.|-)[A-Za-z0-9]+)*
//=> 1.对@后面名字的补充
//=> 多域名	.com.cn
//=> 企业邮箱   zxt@zhufeng-peixun-office.com

//=> \.[A-Za-z0-9]+
//1.这个匹配的是最后的域名  (.com/.cn/.org/.edu/.net...)

1276286521@qq.com

身份证号码

/*
*1. 一共18位
*2.最后一位可能是x
*
* 身份证前六位:省市县 130828
* 中间八位:年月日
* 最后四位:
*	最后一位 => x 或者 数字
*	倒数第二位 => 偶数 女 奇数 男
*	其余的是经过算法算出来的
*/
let reg = /^\d{17}(\d|x)$/;
//=> 小括号分组的第二个作用:分组捕获,不仅可以把大正则匹配的信息捕获到,还可以捕获到每个小分组的内容
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|x)$/;
let res = reg.exec("130828199202281215");
console.log(res);
//=>  ["130828199202281215", "130828", "1992", "02", "28", "1", "5", index: 0, input: "130828199202281215", groups: undefined]

重点:万能-正则表达式处理:

时间字符串格式化

获取URL参数

千分符后的字符串

 ~function () {
     
     		/* 方法1:formatTime: 时间字符串的格式化处理
            *   @params
            *     templete:[string] 我们最后期望获取日期格式的模板
            *     模板规则:{0}->年     {1~5}->月日时分秒
            *   @return
            *     [string]格式化后的时间字符串
            *   by zhufengpeixun  on 2019/08/13
            */
     function formatTime(templete = "{0}年{1}月{2}日 {3}时{4}分{5}秒") {
         let timeAry = this.match(/\d+/g);
         console.log(timeAry);//=>["2019", "8", "13", "16", "51", "3"]
         return templete.replace(/\{(\d+)\}/g, (...[, $1]) => {
             let time = timeAry[$1] || "00";
             return time.length < 2 ? "0" + time : time;
         })
     }
     
     		/*
            * 方法2:queryURLparams:获取URL地址问号后面的参数信息(可能也包含HASH值)
            *   @params
            *   @return
            *     [object]把所有问号参数信息以键值对的方式存储起来并且返回
            *   by zhufengpeixun  on 2019/08/13
            */
     function queryURLparams() {
         let obj = {};
         this.replace(/([^?=&#]+)=([^?=&#]+)/g,(...[,$1,$2])=>{obj[$1] = $2});
         this.replace(/#([^?=&#]+)/g,(...[,$1])=>{obj['HASH'] = $1});
         return obj
     }
     
     		/*
            *方法3:millimeter:实现大数字的千分符处理
            *       @params
            *       @return
            *           [string] 千分符后的字符串
            *    by zhufengpeixun  on 2019/08/13
            */
     function millimeter() {
         return this.replace(/\d{1,3}(?=(\d{3})+$)/g, content => {
             return content + ','
         })
     }

     /*将方法 formatTime 扩展到内置类String.prototype上*/
     ["formatTime", "queryURLparams", "millimeter"].forEach(item => {
         String.prototype[item] = eval(item); // 将字符串转换为js表达式,使用eval(string)
     })
     
 }();
// 调用方法3:实现大数字的千分符处理
let num = "15628954"
console.log(num.millimeter());//=>15,628,954

// 调用方法2:获取URL地址问号后面的参数信息
let url = "http://www.zhufengpeixun.cn/?1x=1&from=wx#video";
console.log(url.queryURLparams());//=>{1x: "1", from: "wx", HASH: "video"}

// 调用方法1:时间字符串的格式化处理
let time = "2019/8/13 16:51:3";

// 想要什么格式的时间,就传入什么格式的时间模板
console.log(time.formatTime("{0}年{1}月{2}日"));//=>2019年08月13日
console.log(time.formatTime("{0}-{1}-{2} {3}:{4}:{5}"));//=>2019-08-13 16:51:03
console.log(time.formatTime());//=>2019年08月13日 16时51分03秒

//=> 服务器获取的时间格式:
// "2019-8-13  16:51:3"
// "2019/8/13  16:51:3"
// "2019/8/13"

// => 想要转变为的格式
// "08月13日  16时51分"
// "2019年08月13日"
// "2019年08月13日  16时51分03秒"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花流雨

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值