正则表达式

概述

正则表达式是用于匹配字符串中字符数组的模式,在js中,正则表达式也是对象。
正则表达式常用来检索,替换那些符合某的样式规则的文本,如用户名表单只能输入英文字母。此外,正则表达式还常作用于页面内容中的某些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等。

  • 灵活性,逻辑性和功能性非常强
  • 可以迅速地用简单的方式表达字符串的复杂控制
通过调用RegExp对象的构造函数创建

var 变量名 = new RegExp(/表达式/);

通过字面量创建 正则表达式

var变量名 = /表达式/;

测试正则表达式test

test()正则对象方法,用于检测字符串是否符合规则,该对象会返回true或者false。其参数是测试字符串
regexObj.text(str)

  • regexObj写的是正则表达式
  • str我们要测试的文本
  • 就是检测str文本是否符合我们写的正则表达式规范
//1.
var regexp = new RegExp(/123/);
console.log(regexp);

//2.
var rg = /123/;
console.log(rg.test(123));
console.log(rg.test(abc));//false

正则表示式的组成

  • 边界符:正则表达式中的边界符用来提示字符所处的位置,主要有两个符号
边界符说明
^表示匹配行首的文本(以谁开始)
$表示匹配行尾的文本(以谁结束)
  • 如果是console,log(reg.text(’^abc$’))则只有abc满足条件

[ ]

  • 字符类[]表示有一系列字符可供选择,只要匹配其中一个就可以了。
    * 如:var rg = /[abc]/;//只要包含有abc其中一个均返回true
    * 如:var rg = /^ [abc] / ; 表 示 三 选 一 , 只 有 包 含 其 中 一 个 的 时 候 才 返 回 t r u e 。 有 两 个 或 多 个 的 时 候 不 行 。 ∗ 如 : v a r r g = / [ a − z ] /;表示三选一,只有包含其中一个的时候才返回true。有两个或多个的时候不行。 * 如: var rg = /^ [a-z] /;truevarrg=/[az]/;//26个英文字母任何一个都返回true

字符组合

  • var reg = / ^ [a-zA-Z0-9]$/; //26个英文字母的大小写都可以
  • var reg = / ^ [ ^ -zA-Z0-9]$/; //中括号前的^表示取反,就是你不能包括这些符号

量词符

量词符用来设定某个模式出现的次数

量词说明
*重复零次或者更多次,相当于>=0
+重复一次或者多次,相当于>=1
重复零次或一次 ,相当于 1 ll 0
{n}重复n次,相当于{3}就是重复三次
{n,}重复n次或者更多次,相当于{3,}是>=3次
{n,m}重复n到m次,相当于{3,16}重复的次数 3<=x<=16
var reg = /^a*$/;
var reg = /^a+$/;
var reg = /^a{3,16}$/;
var reg = /^ [a-zA-Z0-9_-]{6,16}$/;//这里要注意的是6和16之间的逗号不能有空格

案例:用户名验证分析

  • 当表单失去焦点的时候开始验证
  • 如果符合正则表达式,则让后面的span标签添加right类
  • 如果不符合,则让后面的span标签添加wrong类
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" class="uname"><span>请输入用户名</span>
    <script>
        var reg = /^[a-zA-A0-9_-]{6,16}$/;
        var uname= document.querySelector('.uname');
        var span = document.querySelector('span');
        uname.onblur = function(){
            if(reg.test(this.value)){
                console.log('right');
                span.className = 'right';
                span.innerHTML = "right"; 
            }else{
                console.log('wrong');
                span.className = 'wrong';
                span.innerHTML = "wrong";

            }       
        }
    </script>
</body>
</html>

优先级

  • var reg = /^abc{3}$/;只是让c重复三次
  • var reg = /^(abc){3}$/;用小括号来表示优先级,使得abc重复三次
  • 大括号:量符词,里面表示重复次数
  • 中括号:字符集合,匹配方括号中的任意字符
  • 小括号:表示优先级
  • 注意:正则里的或只有一个“|”

预定义类

预定义类说明
\d匹配0-9之间的任一数字,相当于[0-9]
\D匹配所有0-9以外的字符,相当于[ ^ 0 -9 ]
\w匹配任意的字母,数字和下划线 [ ^A-Za-z0-9_]
\W除所有字母,数字,下划线以外的字符,相当于[ ^A-Za-z0-9_]
\s匹配空格(包括换行符,制表符,空格符),相当于[\t\r\n\v\f]
\S匹配非空格的字符,相当于[ ^ \t\r\n\v\f]

正则表达式的替换

stringObject.replace(regexp/substr,replacement)

  • 第一个参数:被替换的字符串或者正则表达式
  • 第二个参数: 替换为的字符串
  • 返回值是一个替换完毕的新增字符串

正则表达式参数

/表达式/[switch]
switch(也称为修饰符)按照什么样的模式来匹配,有三种值

  • g:全局匹配
  • i: 忽略大小写
  • gi: 全局匹配,忽略大小写
<textarea name="" id="message"></textarea>
    <button>提交</button>
    <div></div>
    <script>
        var text = document.querySelector('textarea');
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        btn.onclick = function() {
            div.innerHTML = text.value.replace(/lala|baba/g,'**');

        }
    </script>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值