1. 简单来讲就是正则与字符串操作

exec() 函数

正则
exec()函数用于 检索字符串 中的正则表达式的匹配

如果字符串中有匹配的值,则返回该匹配值,否则返回 null

  1. RegExpObject.exec(string)

例子:

  1. let str = 'hello'
  2. let pattern = /e/
  3. console.log(patten.exec(str)) //["e",index:1,groups:undefinde]

分组

正则表达式中()包起来的内容表示一个分组,可以通过分组来 提取自己想要的内容,示例如下
3.选择、分组和指定匹配位置

  1. let arr = "<div>我是{{name}}</div>
  2. let pattern = /{{([a-zA-Z]+)}}/ //这个正则选择{{}}及内部的元素
  3. var patternResult = pattern.exec(str) //获得于正则相关的数组
  4. console.log(patternResult) //["{{name}}", "name", index:7,input:"<div>我是{{name}}</div>",groups:underfined]

字符串的replace函数

replace() 函数用于在字符串中,用一些字符 替换 另一些字符

  1. let result = '123456'.replace('123456','abc') // 将字符串的123456替换成abc

9.原始值包装类型
多次的 replace 可以通过循环来实现
因为用户输入的字符串长度不确定,我们replace次数不确定,所以我们可以利用while循环来进行

  1. // 包装成函数进行使用
  2. function template(id,data) {
  3. let str = documet.getElementById(id).innerHTML
  4. let pattern = /{{s*([a-zA-Z]+)\s*}}/
  5. let pattResult = null
  6. while(pattRsult = pattern.exec(str)) {
  7. str = str.replace(pattResult[0],data[pattResult[1]])
  8. }
  9. return str
  10. }

replace() 使用(不通过循环来实现替换)

  1. <script>
  2. //设置一个对象实例
  3. let person = {
  4. name: "other",
  5. age: 22,
  6. };
  7. //设置一个自己的模板引擎
  8. let template = (id, data) => {
  9. let templateStr = document.querySelector("#" + id).innerHTML;
  10. // 创建正则表达式
  11. let reg = /{{(\w+)}}/g;
  12. //下面通过replace方法自带函数实现循环替换
  13. // let str = templateStr.replace(reg, (a, b) => person[b]);
  14. let str =templateStr.replace(reg,function(a,b){
  15. console.log(a); //{{name}} {{age}}
  16. console.log(b); // name age
  17. return person[b];
  18. })
  19. return str;
  20. };
  21. let htmlStr = template("tql", person);
  22. document.querySelector(".box").innerHTML = htmlStr;
  23. </script>