• 正则表达式 校验基础


    定义:

            正则表达式:正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在在编程语言中有广泛的应用。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

    正则表达式的作用

    给定的字符串是否符合正则表达式的过滤逻辑(匹配),可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)

    强大的字符串替换能力(替换)

    正则表达式的特点

    灵活性、逻辑性和功能性非常的强,可以迅速地用极简单的方式达到字符串的复杂控制,对于刚接触的人来说,比较晦涩难懂

    组成

    正则表达式由多种字符组成

    特殊字符:普通数字,字母,中文,符号,特殊字符(有中文字符和英文字符区别),等等

    修饰符:

    i执行对大小写不敏感的匹配。
    g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
    m执行多行匹配。

    常用元字符:

    \d

    匹配至少有一个数字

    \D

    匹配至少任意一个非数字的字符

    \w

    匹配至少一个字母或数字或下划线

    \W

    匹配至少有一个不是字母,数字,下划线

    \s

    匹配至少任意的空白符

    \S

    匹配至少一个不是空白符的字符

    .

    匹配至少有一个非换行符

    ^

    表示匹配行首的文本(以谁开始

    $

    表示匹配行尾的文本(以谁结束)

    常用限定符:

    *

    重复零次或更多次\d*  /^ab*$/:表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);

    +

    重复一次或更多次\d+     / ab+/:表示一个字符串有一个a后面跟着至少一个b或者更多;

    ?

    重复零次或一次    /^ab?$/:表示一个字符串有一个a后面跟着零个或者一个b

     

    {n}

    至少重复n

    {n,}

    重复n次或更多次

    {n,m}

    重复nm

     范围匹配和分组等比较特殊的字符:

    []

    字符串用中括号括起来,表示匹配其中的任一字符,[123]匹配123

    -[1-9]匹配1-9  可以写 a-z A-Z 等等 范围
     \的用法 \ 主要是用法是在正则表达式中的特殊符号转换为它本身的意思比如 \-  就可以匹配 - 了
    或者
    ()分组 ([1]) | ([2]) 
    [\u4e00-\u9fa5]匹配中文
    \uxxxx    查找以十六进制数 xxxx 规定的 Unicode 字符。

    创建正则:

    字面量创建:  var reg = /\d/;

    构造函数创建 :  var reg = new RegExp(/\w/);

     正则常用方法:

    正则匹配: 语法: 正则.test('需要匹配的字符串') 

                    效果:如果正则表达式与指定的字符串匹配 ,返回true;否则false

    1. // 只包含数字
    2. var a=/^\d+$/
    3. var str1='1123123123'
    4. var str2='12a'
    5. console.log(a.test(str1)); // true
    6. console.log(a.test(str2)); // false

    正则提取: 语法:需要匹配的字符串.match('正则')

                    效果:查找匹配的 String ,它返回一个数组,在未匹配到时会返回 null。

    1. // 匹配非数字
    2. var a=/[^0-9]/g
    3. let value = '123asdasda'
    4. var arr = value.match(a)
    5. console.log(arr); // (7) ['a', 's', 'd', 'a', 's', 'd', 'a']

     正则替换: 语法: 需要匹配的字符串.replace('正则',替换值)

    比如将字符串的空白,替换为 - 链接

    1. var str = " 123AD asadf asadfasf adf ";
    2. var str=str.replace(/\s/g,"-");
    3. console.log(str);
    4. // ---123AD--asadf---asadfasf--adf-

    替换是将匹配到的字符替换,如果不加修饰符 g ,那么只会替换第一个空白

    1. var str =str.replace(/^\s+|\s+$/g,"-");
    2. // 值替换前后的空白
    3. // -123AD asadf asadfasf adf-


    看我的写法也可以看出,替换也是不会改变原字符串的

    正则表达式就是突出灵活,需要大家实际应用起来,说不定每次都会发现更好的写法,分享几个正则表达式:

    1. // 不包含字母
    2. var reg = /^[^A-Za-z]*$/
    3. // 时间格式:年月日时分秒
    4. var reg = /^\d{4}([/:-\S])(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/
    5. // 严格手机号匹配
    6. var reg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/
    7. // 密码校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
    8. var reg = /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/

    正则表达式深入=》 正则表达式

  • 相关阅读:
    技术分享:深入浅出讲解GLSB是什么?
    异次元店铺商品系统自带支付源码
    使用UiPath和AA构建的解决方案 4. 使用人工智能审核社交媒体
    算法训练day41Leetcode343. 整数拆分 96.不同的二叉搜索树
    上线三天破百万点赞,涵盖90%以上的Java面试题,这份Java面试神技带你所向披靡
    Html&Css 基础总结(基础好了才是最能打的)一
    【无标题】
    vue:Video.js 快速整合
    Redis 中使用 list,streams,pub/sub 几种方式实现消息队列
    程序员天天 CURD,怎么才能成长,职业发展的思考 ?
  • 原文地址:https://blog.csdn.net/paidaboluo/article/details/126138923