正在表达式全称(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)]$/

本文在个人博客同步更新