正则表达式 入门

133 阅读1分钟

1. 构造函数

let reg=new RegExp();
let reg=/[a-z]/i;

2. 字符意义

i :执行对大小写不敏感的匹配
g :执行全局匹配
[ ] :区间,只要有一个符合就返回 true
[0-9] :0-9任意数字
[a-z] :任意a-z的小写字符
[A-Z] :任意A-Z的大写字符
^ :①在[ ]内时,表示取反 ② 指定的是一个字符串的开始
$ :指定的是一个字符串的结束 (限定字符/^ $/
{N} :在一个字符组后加上{N} 就可以表示在它之前的字符组出现N
{M,N} :重复区间,M是下界 而 N是上界
{N,} :重复次数没有边界

\s :匹配空白字符(空格、换行\n、回车\r), 空字符('')不可匹配
\S :匹配非空白字符(空格、换行\n、回车\r 、空字符'',返回false)
\b  :匹配的是单词的边界,\bmaster\b 就仅匹配有边界的 master 单词
+ :等价于{1,}
* :等价于{0,} image.png 图片来自 www.codejiaonang.com/\

3. 正则对象校验的方法

(1) test() 返回 true 或 false
(2) exec() 符合返回一个数组,不符合返回null

    <script>
        //匹配非数字、字母、下划线6-9次
        let reg = /^\W{6,9}$/;
        //匹配非空白字符1到多次
        let reg2 = /^\S+$/;
        //匹配空白字符0-1次
        let reg3 = /^\s?$/;
        console.log(reg3.test('  '));
    </script>

⭐验证汉字 \u4e00-\u9fa5 速记:有事100,有酒罚我

    <script>
        //验证26个英文字母组成的字符串
        var str = 'sdfghjty';
        var reg = /^[a-zA-Z]+$/;
        console.log(reg.test(str));
        //验证由数字和26个英文字母组成的字符串
        var str2 = 'fghjkl122';
        var reg2 = /^[0-9a-zA-Z]+$/;
        console.log(reg2.test(str2));
        //验证由数字、字母、下划线组成的字符串
        var str3 = '1f\_S';
        var reg3 = /^\w+$/;
        console.log(reg3.test(str3));
        //验证汉字 
        var str4 = '千树万树梨花开';
        var reg4 = /^[\u4e00-\u9fa5]+$/;
        console.log(reg4.test(str4));
        
        //给数字加上[]
        var str = 'abc345efg';
        strNew = [];
        for (var i in str) {
            console.log(/\d/.test(str[i]));
            if (/\d/.test(str[i]) == true) {
                strNew.push('[' + i + ']');
            } else { strNew.push(str[i]) }
        }
        alert(strNew.join(''))
    </script>

4. string类型支持正则的方法

    <script>
       // search()返回匹配到的第一个字符的下标,否则返回-1
       // match() 返回一个数组(依赖于知否具有全局标志g)  否则返回null
       // replace() 返回一个新的字符串
       let str='afbggv12dfds';
       let newStr=str.replace(/\d/g,'oo');
       console.log(newStr);
       // split(__,n) n表示返回数组元素个数 返回一个字符串数组 匹配不到会把整个字符串当作数组返回
       let str2='a1vv5d1s';
       console.log(str2.split(/\d/,3));
    </script>