zoukankan      html  css  js  c++  java
  • javascript 常用正则表达式收集

    常用正则表达式收集

    正则是程序员又爱又恨的一部分了,会用的可以大大提高检验效率,不会用的写一个正则都脑袋疼,所以慢慢积累一些正则方便使用。在写正则之前,一定要先分析清规则,才能写好正则,请大家细细品这句话。

    测试用例代码格式

    每次只需要修改测试的字符串和正则表达式即可测试

    
          // 测试用例
          var strArr = ['1234@qq.com', 'wang@126.com', 'wang123@126.com', 'wang123@vip.163.com', 'wang_email@outlook.com', 'wang__email@outlook.com', 'wang_email_@outlook.com', 'wangemail_@outlook.com','wang_emai.l@outlook.com','wang.email@gmail.com'];
          // 正则表达式
          var reg = /^[A-Za-z0-9]+([_.][A-Za-z0-9]+)*@([A-Za-z0-9-]+.)+[A-Za-z]{2,6}$/;
          
          // 无效的字符串
          var aResError = [];
          // 遍历校验字符串
          var aRes = strArr.map(function (item) {
            if (!reg.test(item)) {
              var str = item + ' 正则无效';
              aResError.push(str);
              return str;
            }
            return item + ' 正则有效';
          });
    
          // 全部测试用例结果
          console.log('全部测试用例结果: ' , aRes);
    
          // 测试无效用例结果
          console.log('测试无效用例结果: ' , aResError);
    

    邮箱正则

    邮箱正则:/^[A-Za-z0-9]+([_.][A-Za-z0-9]+)*@([A-Za-z0-9-]+.)+[A-Za-z]{2,6}$/

    首来看几个合法邮箱的例子:

    • 1234@qq.com(纯数字)
    • wang@126.com(纯字母)
    • wang123@126.com(数字、字母混合)
    • wang123@vip.163.com(多级域名)
    • wang_email@outlook.com(含下划线 _
    • wang.email@gmail.com(含英语句号 .

    根据对以上邮箱的观察,可将邮箱分为两部分(“@”左边和右边部分)来进行分析:

    • 左边部分可以有数字、字母、下划线(_)和英语句号(.),左侧不能出现连续的_.,且不能在结尾,因此可以表示成:[A-Za-z0-9]+([_.][A-Za-z0-9]+)*
    • 右边部分是域名,按照域名的规则,可以有数字、字母、短横线(-)和英语句号(.),另外顶级域名一般为 2 ~ 6 个英文字母(比如“cn”、“com”、“site”、“group”、“online”),故可表示为:([A-Za-z0-9-]+.)+[A-Za-z]{2,6}。

    要注意两点:

    • 考虑到匹配邮箱时字符串的一头一尾不能有其它字符,故要加上开始标志元字符 ^ 和结束标志元字符 $
    • 英语句号(.)是正则表达式的元字符,因此要进行转义(.)。

    手机号正则

    手机号正则:/^1[3456789]d{9}$/

    手机号由于运营商繁多,基本上都是1开头的11位数字,忽略掉各运营商的细节可以写个大概的正则,如果你要针对各个运营商和各个号段写正则就需要具体的规则了。

    身份证号正则

    身份证号正则:/^d{15}$)|(^d{17}([0-9]|X)$/

    身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X

    身份证正则合并:

    /^d{15}$)|(^d{17}([0-9]|X)$/
    

    数字正则

    • 数字:^[0-9]*$
    • n位的数字:^d{n}$
    • 至少n位的数字:^d{n,}$
    • m-n位的数字:^d{m,n}$
    • 零和非零开头的数字:^(0|[1-9][0-9]*)$
    • 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
    • 带1-2位小数的正数或负数:^(-)?d+(.d{1,2})$
    • 正数、负数、和小数:^(-|+)?d+(.d+)?$
    • 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
    • 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
    • 非零的正整数:^[1-9]d*$^([1-9][0-9]*){1,3}$^+?[1-9][0-9]*$
    • 非零的负整数:^-[1-9][]0-9"*$^-[1-9]d*$
    • 非负整数:^d+$^[1-9]d*|0$
    • 非正整数:^-[1-9]d*|0$^((-d+)|(0+))$
    • 非负浮点数:^d+(.d+)?$^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$
    • 非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$
    • 正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$
    • 负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    • 浮点数:^(-?d+)(.d+)?$^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$

    字符正则

    • 汉字:^[u4e00-u9fa5]{0,}$
    • 英文和数字:^[A-Za-z0-9]+$^[A-Za-z0-9]{4,40}$
    • 长度为3-20的所有字符:^.{3,20}$
    • 由26个英文字母组成的字符串:^[A-Za-z]+$
    • 由26个大写英文字母组成的字符串:^[A-Z]+$
    • 由26个小写英文字母组成的字符串:^[a-z]+$
    • 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
    • 由数字、26个英文字母或者下划线组成的字符串:^w+$^w{3,20}$
    • 中文、英文、数字包括下划线:^[u4E00-u9FA5A-Za-z0-9_]+$
    • 中文、英文、数字但不包括下划线等符号:^[u4E00-u9FA5A-Za-z0-9]+$^[u4E00-u9FA5A-Za-z0-9]{2,20}$
    • 可以输入含有^%&',;=?$"等字符:[^%&',;=?$x22]+
    • 禁止输入含有~的字符:[^~x22]+

    特殊需求表达式

    • 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]w{5,17}$
    • 日期格式:^d{4}-d{1,2}-d{1,2}
    • 空白行的正则表达式: s* (可以用来删除空白行)
    • HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式:^s*|s*$或(^s*)|(s*$ ) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

    参考:
    书写一个用于验证邮箱的正则表达式

  • 相关阅读:
    DockerCompose安装与快速体验
    Nginx:Docker部署与负载均衡开发实践
    JAVA基础:反射基础
    JVM:类加载机制
    JAVA基础:注解应用示例
    JAVA基础:注解机制
    JAVA并发(五):关键词final
    JAVA并发(四):关键词volatile
    Linux虚拟机配置作为旁挂路由器
    Linux起不来,如何修复
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/14298780.html
Copyright © 2011-2022 走看看