正则表达式详解

简介: 规则表达式

二,应用场景


表单的验证


三,正则的使用


定义:

   字面量://

   构造函数: new Regexp()

区别:

   new Regexp():放入变量


四,正则的方法


test():检测一个内容是否与正则匹配

       如果匹配返回true

       否则返回false

       

exec():检测一个内容是否与正则匹配

       如果匹配返回数组

       否则返回null


元字符


元字符
[]匹配中括号内任意一个字符
        var reg1 = /[abc]/;
[^]除了中括号内任意字符
        var reg1 = /[^abc]/;
[0-9]匹配0到9的数字/匹配单个数字/可以修改范围
        var reg1 = /[0-9]/;
[a-z][A-Z]匹配字母/区分大小写/可以修改范围
        var reg1 = /[a-zA-Z]/;
\d  匹配数字
\D  匹配非数字
\w  匹配数字,字母,下划线 ===> [a-zA-Z0-9_]
\W  匹配非数字,字母,下划线
\s  匹配空格
\S  匹配非空格
\b  匹配边界
\B  匹配非边界

.   匹配除换行符以外的任意字符


转义()


/\./

本身失去原有的功能


一,选择符


|:或


二,修饰符


i:不区分大小写

g:全文匹配 全局

三,字符串方法可以配合正则去使用

replace() 替换
    var str = 'a,b,c,a';
    //加g表示全局 全部的a都替换 否则只替换第一个
    console.log(str.replace(/a/g,'w'))

math(支持全局,字符串方法):类似与exec(正则方法) 查找返回对应的值,【值是数组】。没有找到返回Nnull


限定符


^ 以什么开始

$ 以什么结束


重复


{n}     重复n次   针对于前一个

{n,}    重复最少n次,最多不限

{n,m}   重复最少n次,最多m次


*       重复最少0次,最多不限

+       重复最少一次,最多不限

?       重复最少0次,最多一次


贪婪模式


一,贪婪模式
    /\d{3,6}/g;      g    取最大值6
二,非贪婪模式(懒惰模式)
    /\d{3,6}?/g;     ?    取最小值3
    例子:var reg1 = /\d{3,6}?/g;
        var str1 = '12345678912345';
        console.log(str1.replace(reg1,'*'))


一,分组


() :    把部分内容组合在一起


二,字符类:获取分组内的内容


$1
$2
$3
...
前提:必须执行一次 必须要分组
var reg1 = /^(\d{4})-(\d{2})$/;
var str1 = '2021-06';
console.log(str1.replace(reg1,'$2'));
reg1.test(str1); console.log(RegExp.$2,RegExp.$1);


前瞻


正向前瞻:(?=):匹配符合的

//看一看 \d(数字)后面是不是字母,是的话匹配
    var reg1 = /\d(?=[a-z])/g;
    var str1 = '1a2b*%3asd5';
    console.log(str1.replace(reg1,'*'));
    //*a*b*%*asd5
负向前瞻:(?!):匹配不符合的
    //看一看 \d(数字)后面不是字母的,不是的话匹配
    var reg1 = /\d(?![a-z])/g;
    var str1 = '1a2b*%3asd5';
    console.log(str1.replace(reg1,'*'));
    //1a2b*%3asd*

***jS正则没有后顾

//复杂密码 //可以有数字可以有字母,并且是3-6位 //必须有字母、必须有数字 //(?=.d):任意字符后必须是数字 //(?=.[a-z]):任意字符后必须是字母 var reg=/(?=.\d)(?=.a-z)[0-9a-zJ]{3,6}$/i; console. Log( reg.test(this value));


例子

 

//以字母a开头,后一位必须是数字
  //字母a后面必须是一位数字
  // var reg1 = /^a\d/;
  // var str1 = 'a1';
  // console.log(reg1.test(str1));
var btn = document.getElementById('btn'),
  tel = document.getElementById('tel');
  btn.onclick = function(){
    //正则
    //以1开头 第二位必须是3578中一位 剩下九位只能为数字
    var reg = /^1[3578]\d{9}$/;
    if(reg.test(tel.value)){
      alert('手机号正确');
    }else {
      alert('错误');
    }
  }


相关文章
|
4月前
常用正则表达式 (必备)
常用正则表达式 (必备)
|
23天前
|
XML 前端开发 数据安全/隐私保护
正则表达式
正则表达式
|
2月前
|
Unix Perl
基本正则表达式
基本正则表达式
16 2
|
8月前
|
机器学习/深度学习 程序员 vr&ar
正则表达式的使用
正则表达式的使用
36 0
|
11月前
|
数据安全/隐私保护
关于正则表达式我所知道的
关于正则表达式我所知道的
71 0
|
机器学习/深度学习 前端开发 JavaScript
一文掌握正则表达式
本文适合对正则不太熟悉,以及想掌握正则表达式的小伙伴阅读~
|
数据安全/隐私保护
常用的正则表达式
常用的正则表达式
【正则表达式】总结
【正则表达式】总结
81 0
|
数据采集 Python
第63天:正则表达式
第63天:正则表达式
138 0
第177天:常用正则表达式(最全)
常用正则表达式 1 2 /* 常用正则表达式大全!(例如:匹配中文、匹配html) 3 4 匹配中文字符的正则表达式: [u4e00-u9fa5] 5 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 6 匹配双字节字符(包括汉字在内):[^x0...
1091 0