正则基础(附常用案例)

正在表达式全称(Regular Expression),是描述字符模式的对象。正则表达式在表单校验中很常用。了解正则的基本使用对一个开发人员来说再基础不过了,不管前端还是后端。

在这里插入图片描述

构造形式

  • 普通方式语法

    • var reg = /表达式/附加参数[可选]
      
    • 表达式为一个字符串或者特殊字符,代表某种规则

    • 参数主要用来扩展表达式的含义

      g:全局匹配
      i:不区分大小写匹配
      m:进行多行匹配
      
      • 举个栗子:

        var reg = /deDreram/;
        /*表示匹配含有deDream字符串*/
        var reg = /deDream/i;
        /*表示不区分大小写匹配含有deDream字符串*/
        

RegExp对象方法

方法作用
compile()编译正则表达式
exec()检索字符串中指定的值,返回找到儿的值,并确定其位置
test检索字符串中指定的值,返回true或false
  • compile语法demo

  • /*
    *在字符串中全局搜索子串man,并用person替换。然后通过该方法改变正则表达式,用person替换man或woman
    */
    <script type="text/javascript">
        let str1 = "Every man in the world! Every woman on earth!";
        pattern = /man/g;
        str2 = str1.replace(pattern,"person");
        document.write(str2);
        pattern = /(wo)?man/g;
        pattern.compile(pattern);
        str2 = str1.replace(pattern,"person");
        document,write(str2);
        </script>
    
  • exec语法demo

    <script type="text/javascript">
        let str = "优秀是一种习惯!";
        let reg = new RegExp("习惯","g");
        let res;
        while((res=reg.exec(str))!=null){
            document.write(res);
            document.write(reg.lastIndex);
        }
        </script>
    

两种模式

简单模式

通过普通字符的组合来表达的模式

let reg = /code is cool/;
复合模式

通过含有通配符来表达的模式,匹配范围大,灵活性强,挺迟也是常用的模式

let reg = /a+b?\w/;
正则中方括号的含义
表达式描述
[abc]查找方括号之间的任何字符
[^abc]查找任何不再方括号之间的字符
[0~9]查找任何中0到9的数字
[a~z]查找任何从a-z的小写字符
[A~Z]查找任何从A-Z的大写字符
正则中常用字符的含义
符号含义
/…/一个模式的开始和结束
^匹配字符串的开始
$匹配字符串的结束
\s任何空白字符
\S任何非空白字符
\d匹配一个数字字符,与[0~9]等价
\D除了数字之外的任何字符,与[^0~9]等价
\w匹配一个数字字母下划线,与[A~Za~z0~9]等价
\W任何非单字字符,与[^A~Za~z0~9]等价
.除了换行之外的任意字符
正则中常用量词的含义
符号描述说明
*出现0次或连续多次/a*b/可匹配b,aab,aaab…
+至少出现一次/a+b/可匹配ab,aab,aaaab…
?出现0次或一次/a[cd]?/可匹配a,ac,ad
{n}连续出现n次/a{3}/相对于aaa
{n,}连续出现至少n次/a{3,}/可匹配aaa,aaaaa,…
{n,m}连续出现至少n次,至多m次/ba{1,3}/开可匹配ba,baa,baaa,
补充
  • 上述说明中的的量词,主要作用于符号左边的匹配串,比如a*b,是指a出现的吃素可以是0次也可以是多次。
  • a[cd]?中是指cd这个整体中的字符串其中之一至少出现0次或者1次

常用案例

用户名匹配

用户名由英文字母和数字组成的4-16位字符,字母开头

/^[a-zA-Z][a-zA-Z0-9]{3,15}$/
密码匹配

密码由4-10位字符组成

/^[a-zA-Z0-9]{4,10}$/
电话号码匹配

手机号必须为11位数字并且1开头

/^1\d{10}$/
邮箱匹配

邮箱地址必须包含@符号和.符号,并且.符号必须在@之后,邮箱地址以.com或.cn结束

/^\w+@\w+\.\w+[(com)|(cn)]$/

本文在个人博客同步更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值