正则相关

/* 
    在线正则表达式测试:
    https://tool.oschina.net/regex/#


    + 号代表前面的字符必须至少出现一次(1次或多次)。
    * 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
    ? 问号代表前面的字符最多只可以出现一次(0次、或1次)。

    *、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
        例如,您可能搜索 HTML 文档,以查找括在 H1 标记内的章节标题。该文本在您的文档中如下:
        <H1>Chapter 1 - 介绍正则表达式</H1>
        贪婪:下面的表达式匹配从开始小于符号 (<) 到关闭 H1 标记的大于符号 (>) 之间的所有内容。
        /<.*>/
        非贪婪:如果您只需要匹配开始和结束 H1 标签,下面的非贪婪表达式只匹配 <H1>。
        /<.*?>/

        通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。

    <input v-model.trim="account" placeholder="限制最多输入小数点后4位"
    oninput="value=/^\d+\.?\d{0,4}$/.test(value) ? value : value.substr(0,value.length-1)"> 
*/


var regx = {
    // 验证手机号码
    mobile: /^0?1(3|4|5|7|8)[0-9]{9}$/,
    // 验证中文名字
    name: /^[\u4e00-\u9fa5]+·[\u4e00-\u9fa5]+$|^[\u4e00-\u9fa5]+$/,
    // 匹配18位身份证号
    idNum: /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/,
     //非0正整数校验
    integerReg: /^[1-9][0-9]*$/
}
Reg = /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/;
DefTip = '请填写正确的邮箱地址';

Reg = /\d{3,4}[\-|\s|_]?\d{7,18}/;
DefTip = '请填写正确的电话号码,如:021-12345678';

Reg = /\d{4}(\-|\/|.|_)\d{1,2}\1\d{1,2}(\s?\d{1,2}\:\d{1,2}(\:\d{1,2})?)?$/;
DefTip = '请填写正确的日期,如:2008-01-01 01:00:00';

Reg = /((https|http|ftp|rtsp)?:\/\/)[^\s]+/;
DefTip = '请填写正确的网址';

// (00-899)005522 或者(000+2255)8999的电话号码
Reg = /^(\([0-9]+[\-\+][0-9]+\))?\d+$/

console.log('非0正整数校验',regx.integerReg.test(123))

/*
    [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。
    要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。

    ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
    
    分开来注释一下:
    ^ 匹配一行的开头位置
    (?![0-9]+$) 预测该位置后面不全是数字
    (?![a-zA-Z]+$) 预测该位置后面不全是字母
    [0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
    $ 匹配行结尾位置

    注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。
*/



/*
千分符

正则表达式中 的$1,$2
$1,$2表达的是小括号里面的内容
$1是第一个小括号里的内容,$2是第二个小括号里面的内容,依此类推

比如(\\d{4})(\\d{2})(\\d{2})  匹配"20190919"
$1是第一个括号里匹配的2019
$2是第二个括号里匹配的09
$3是第三个括号里匹配的19

?=n    匹配任何其后紧接指定字符串 n 的字符串。
 */
function milliFormat(num) {
    return     num.toString().replace(/\d+/, function(s){
         return s.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
     })
}

const txtRules = {
  message: '不能输入中文',
  pattern: new RegExp('[^\u4E00-\u9FFF]+$'),
  trigger: "blur"
}

const txtRules_1 = {
  message: '控制只允许输入中文字符',
  pattern: new RegExp('^[\u4E00-\u9FFF]+$'),
  trigger: "blur"
}
 
const txtRules = {
  message: '密码格式6-12位字符,包含数字、字符、字母大小写至少两种类型',
  pattern: new RegExp(/^(?![0-9]+$)(?![a-zA-Z]+$)(?![!@#$%^&*?\(\)]+$)[0-9A-Za-z!@#$%^&*?\(\)]{6,12}$/),
  trigger: "blur"
}
 
相关链接
https://www.runoob.com/jsref/jsref-obj-regexp.html
https://zhuanlan.zhihu.com/p/343732546
 

 

posted @ 2020-03-26 16:48  日升月恒  阅读(179)  评论(0)    收藏  举报