这篇博客主要讲正则五个方面的应用,有单独的也有互相结合的,那么下面我们就开始吧!
(1)正则的exec函数
该函数的作用是如果字符串中有匹配的值则返回该匹配的值,否则返回null,核心代码如下:
- <script>
- var str = 'hello';
- var pattern = /o/;
- console.log(pattern.exec(str));
- script>
输出结果为:
(2)分组
正则表达式中()包起来的内容表示一个分组,可以通过分组来提取自己想要的内容。示例代码如下:
- <script>
- var str = '<div>我是{{name}}div>'
- var ptn = /{{([a-zA-Z]+)}}/;
- var res = ptn.exec(str);
- console.log(res);
- script>
输出结果为:
(3)使用循环replace,示例代码如下:
- <script>
- // 使用while循环进行replace操作
- var str = '<div>{{name}}今年{{ age }}岁了div>'
- var ptn = /{{\s*([a-zA-Z]+)\s*}}/;
- var result = null;
- while (result = ptn.exec(str)) {
- str = str.replace(result[0], result[1]);
- }
- console.log(str);
- script>
输出结果:
(4)将正则匹配到的内容替换为真值,示例代码如下:
- <script>
- var data = {
- name: 'sy',
- age: 18
- };
- var str = '<div>{{name}}今年{{ age }}岁了div>'
- var ptn = /{{\s*([a-zA-Z]+)\s*}}/;
- var result = null;
- while (result = ptn.exec(str)) {
- str = str.replace(result[0], data[result[1]]);
- }
- console.log(str);
- script>
输出结果:
(5)最后这个比较有意思,正则实现简易的模板引擎,示例代码如下:
- DOCTYPE html>
-
-
-
-
-
Document -
-
-
-
-
- 姓名:{{name}}
- 年龄:{{ age }}
- 性别:{{ gender }}
- 住址:{{address }}
-
-
-
- var data = {
- name: 'sy',
- age: 18,
- gender: '女',
- address: "成都"
- };
- // 调用模板函数
- var res = template('tpl', data);
- $('#dom').html(res);
-
- function template(id, data) {
- var reg = /{{\s*([a-zA-Z]+)\s*}}/;
- var content = $('#' + id);
- var ptn = null;
- // 循环正则替换
- while (ptn = reg.exec(content[0].innerHTML)) {
- content[0].innerHTML = content[0].innerHTML.replace(ptn[0], data[ptn[1]]);
- }
- // 返回替换结果
- return content[0].innerHTML;
- }
-
-
结果如下: