• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

6、模板引擎的实现原理

6.1、正则与字符串的操作

6.1.1、基本语法

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

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

语法格式如下:

RegExpoject.exec(字符串)

示例代码如下:

var str='你好'

定义变量模式=/o/

//输出的结果['o ',index: 4,input: 'hello ',grcups: undefined]

var r=pattern.exec(str)

控制台。对数(r)

6.1.2、分组

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

示例代码如下:

var str='div我是{{name}}/div '

var pattern=/{{([a-zA-Z] )}}/

var r=pattern.exec(str)

//输出结果:['{{name}} ',' name ',index: 7,input: 'div我是{{name}}/div ',groups 3360 undefined]

控制台。log(r);

6.1.3、字符串的 replace 函数

代表王牌()函数用于在字符串中的一些字符替换另外一些字符

示例代码如下:

var结果='123456 ' .替换(' 123 ',' abc')//得到的结果的值为字符串abc456 '

代码实现:

var str='div我是{{name}}/div '

var pattern=/{{([a-zA-Z] )}}/

var r=pattern.exec(str)

//将索引为0的这一项,改成为索引为一的这一项

str=str.replace(r[0],r[1])

控制台。log(str);

6.1.4、多次 replace

脚本

var str='div{{name}}今年{{年龄}}岁了/div '

var pattern=/{ { \ s *(a-zA-Z))\ s * } }/

//第一次匹配

var res1=pattern.exec(str)

控制台。日志(res1);//['{{name}} ',' name ',index: 5,input: 'div{{name}}今年{{年龄}}岁了/div ',组:未定义]

str=str.replace(res1[0],res1[0])

控制台。log(str);//div{{name}}今年{{年龄}}岁了/div

//第二次匹配

var res2=pattern.exec(str)

控制台。日志(res2);//['{{name}} ',' name ',index: 5,input: 'div{{name}}今年{{年龄}}岁了/div ',组:未定义]

str=str.replace(res2[0],res2[1])

控制台。log(str);//divname今年{{年龄}}岁了/div

//第三次匹配

var res3=pattern.exec(str)

控制台。日志(res3);//['{{ age }} ',' age ',index: 11,input: 'divname今年{{年龄}}岁了/div ',组:未定义]

str=str.replace(res3[0],res3[1])

控制台。log(str);//divname今年年龄岁了/div

/脚本

6.1.5、循环多次 replace

脚本

var str='div{{name}}今年{{年龄}}岁了/div '

var pattern=/{ { \ s *(a-zA-Z))\ s * } }/

var pat=null

//只要有匹配项就一直匹配

while (pat=pattern.exec(str)) {

str=str.replace(pat[0],pat[1])

}

控制台。log(str);

/脚本

6.1.6、replace替换成真值

脚本

var data={ name: 'zs ',age: 20 }

var str='div{{name}}今年{{年龄}}岁了/div '

var pattern=/{ { \ s *(a-zA-Z))\ s * } }/

var pat=null

while (pat=pattern.exec(str)) {

str=str.replace(pat[0],data[pat[1]])

}

控制台。log(str);

/脚本

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now