所有的正则表达式,都被统一放在了网上,你只要想用,百度搜索就可以了
不用我们自己写新的正则表达式,我们只要会使用,基本能看懂就行了

什么是正则表达式:

正则表达式严格来说,是一个语法规范,验证规范
对于 字符串 内容 规范的验证

正则表达式语法规范:

1.正则表达式的内容,必须写在 / / 之间

相当于 字符串 必须写在 '  ' 引号之间

2.使用正则表达式:

(1) 验证:  test()

执行结果是 符合验证规范,结果是 true
不符合验证规范,结果是 false

正则表达式.test(字符串)  验证字符串是否符合正则表达式规范

    let str1 = 'abc';
    let reg1 = /\d/;   
    console.log( reg1.test(str1) );  //false

(2) 捕获:  exec()

获取 符合 验证规范的内容
执行结果是一个伪数组
    var str="Hello world!";
    //查找"Hello"
    var patt=/Hello/g;
    var result=patt.exec(str);
    document.write("返回值: " +  result); //Hello
    //查找 "RUNOOB"
    patt=/RUNOOB/g;
    result=patt.exec(str);
    document.write("
返回值: " + result); //null/code>

3.正则表达式的语法:

元字符

单独使用元字符,只要有符合规范的内容就行,不需要完全符合
\d   数字    只要有数字就行,不用都是数字
\D   非数字
\w   数字,字母,下划线
\W   非数字,字母,下划线
\s   空格
\S   非空格

边界符

^   起始   写在 正则表达式开始的位置
$   结束   写在 正则表达式结束的位置
^ 独立使用 起始边界符 表示 必须以符合规范的内容起始 之后的内容没有限制
$ 独立使用 结束边界符 表示 必须以符合规范的内容结束 之前的内容没有限制
^正则$  只能是一个符合规范的字符
    let reg1 = /^\d/;   // 数字开头
    let reg2 = /\d$/;   // 数字结尾
    let reg3 = /^\d$/;  // 只能有一个数字

限定符

显示内容字符个数的正则表达式
一般要与 起始和结束符号一起使用, 独立使用要出问题
*     0  至  正无穷 个字符   可以没有,可以有无穷多个
+     1  至  正无穷 个字符   至少有一个字符
?     0  至  1 个字符   可以没有,最多有一个
{n}   只能有n个字符
{n,}  n 至 正无穷个字符串
{n,m}  n 至 m 个字符串
限定符 一定要和 ^ $ 起始结束边界符配合使用
    let reg1 = /^\d*$/;     // 从开始到结束,可以有 0-正无穷个数字字符,不能有其他字符
    let reg2 = /^\d+$/;     // 从开始到结束,可以有 1-正无穷个数字字符,不能有其他字符
    let reg3 = /^\d?$/;     // 从开始到结束,可以有 0-1 个数字字符,不能有其他字符
    let reg4 = /^\d{5}$/;   // 从开始到结束,只能有 5个数字字符,不能有其他字符
    let reg5 = /^\d{5,}$/;   // 从开始到结束,可以有 5 - 正无穷个数字字符 ,不能有其他字符
    let reg6 = /^\d{5,6}$/;   // 从开始到结束,可以有 5 - 6 个数字字符 ,不能有其他字符

特殊符号

|    逻辑运算符   表示逻辑或
()   将()中的内容,作为一个整体来验证
一般每一个条件都会使用()包裹,确保执行顺序的正确
[ ]  表示符合[]中定义的任意一个内容就可以
每次设定,都是匹配一个字符,不能匹配多个字符
逗号间隔,就是独立的一个字符的匹配
如果没有逗号间隔,就是一个整体验证,只要是字符内容,符合[]中的内容就可以,顺序等无所谓
注意: [] 中 有没有逗号,是两种验证语法
a-b  只要是 a - b 范围内的内容,都可以
[^]  非符合的内容,就是逻辑非
写在正则表达式 // 外的  一般是与 函数配合使用
//g   全局匹配
//i   不区分大小写
    var str1="1234567"
    let reg1 = /^\d{6,9}\w{5,7}$/;  //6到9个数字加5到7个数字子母下划线
    let reg2 = /^(\d{6,9})|(\w{5,7})$/;  // 6到9个数字或者5到7个数字子母下划线
    console.log(reg1.test(str1));  // false
    console.log(reg2.test(str1));  // ture
    var str2="niahao"
    let reg3 = /^[nihao,hellow]+$/ ; 
    let reg4 = /^[a-z]+$/ ; 
    console.log(reg3.test(str2));  // ture
    console.log(reg4.test(str2));  // ture

配合函数

search() 查询是否有这个数据字符串

效果有与 indexOf() 相同
indexOf() 不支持正则表达式
    let str = 'abcdefg';
    console.log( str.search('g') );
    console.log( str.search('G') );

    // /G/   使用正则表达式,查找 G大写字母G 
    // /G/i  使用正则表达式,查找 G 大写字符G 同时不区分大小写,也就是 大写G 小写g 都算匹配
    console.log( str.search( /G/ ) );
    console.log( str.search( /G/i ) );

replace()  字符串替换

默认值替换符合规范的第一个内容 --- 懒惰模式

        let str2 = 'abcabcabc';
        // 默认只替换第一个a
        str2 = str2.replace( 'a' , '北京' );
        
        // 使用正则表达式,替换所有
        // /a/g   替换字符串中所有的 a 字符
        str2 = str2.replace( /a/g , '北京' );
        console.log(str2);

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。