【Ajax学习】正则

1 正则与字符串操作

1、基本语法

exec()函数用于检索字符串中的正则表达式的匹配。
如果字符串中有匹配的值,则返回该匹配值。否则返回null。

注意:一次只能匹配到一个符合条件的,如果想得到多个符合条件的,则要多次调用exec()函数。

2、分组

正则表达式中()包起来的内容表示一个分组,可以通过分组来提取自己想要的内容,示例代码如下:

注意:案例中的{{}}为占位符,小括号可以将分组中的内容提取出来,不加()就只能匹配,不能提取

3、字符串的replace函数

这个函数后面经常用到。

replace(函数用于在字符串中用一些字符替换另一些字符,语法格式如下:

<script>
        var str = '<div>我是{{name}}</div>'//{{}}为占位符
        var pattern = /{{([a-zA-Z]+)}}/;

        var patternResult = pattern.exec(str);
        // console.log(result);
        str = str.replace(patternResult[0], patternResult[1]);
        console.log(str);

    </script>

4、多次replace

<script>
        var str = '<div>我是{{name}}今年{{age}}岁</div>'//{{}}为占位符
        var pattern = /{{\s*([a-zA-Z]+)\s*}}/;

        var patternResult = pattern.exec(str);
        // console.log(result);
        str = str.replace(patternResult[0], patternResult[1]);
        patternResult = pattern.exec(str);
        str = str.replace(patternResult[0], patternResult[1]);
        console.log(str);

    </script>

 

5、使用while循环replace

<script>
        var str = '<div>我是{{name}}今年{{age}}岁</div>'//{{}}为占位符
        var pattern = /{{\s*([a-zA-Z]+)\s*}}/;

        var patternResult = null;
        while(patternResult = pattern.exec(str)){
            str = str.replace(patternResult[0], patternResult[1]);
        }
        console.log(str);

    </script>

6、replace替换为真值

 var data = {name: 'zhangsan', age: 18};
        var str = '<div>我是{{name}}今年{{age}}岁</div>'//{{}}为占位符
        var pattern = /{{\s*([a-zA-Z]+)\s*}}/;

        var patternResult = null;
        while(patternResult = pattern.exec(str)){
            str = str.replace(patternResult[0], data[patternResult[1]]);
        }
        console.log(str);

注意:data[patternResult[1]] = data['name']

 

2 自己封装一个template函数

 function template(id, data){
            var str = document.getElementById(id).innerHTML;
            var pattern = /{{\s*([a-zA-Z]+)\s*}}/;
            var patternResult = null;
            while(patternResult = pattern.exec(str)){
                str =  str.replace(patternResult[0], data[patternResult[1]]);
            }
            return str;
        }

使用:

<div id="user-box"></div>
    <!-- 定义一个模板结构 -->
    <script type="text/html" id="tpl-user">
        <div>姓名:{{name}}</div>
        <div>年龄:{{ age }}</div>
        <div>性别:{{  gender}}</div>
        <div>住址:{{address  }}</div>

    </script>
    <script>
        function template(id, data){
            var str = document.getElementById(id).innerHTML;
            var pattern = /{{\s*([a-zA-Z]+)\s*}}/;
            var patternResult = null;
            while(patternResult = pattern.exec(str)){
                str =  str.replace(patternResult[0], data[patternResult[1]]);
            }
            return str;
        }
        /* 定义数据 */
        var data = {name: '张三', age: 20, gender: '男', address: '天津'};
        /* 预调用模板引擎 */
        var htmlStr = template('tpl-user', data);
        /* 渲染页面结构 */
        document.querySelector("#user-box").innerHTML = htmlStr;

    </script>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值