正则与字符串操作

2022-10-26 17:28:56 浏览数 (2)

基本语法

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

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

代码语言:javascript复制
        var str = 'hello'
        var pattern = /o/
        //输出的结果['o', index: 4, input: 'hello', groups: undefined]
        console.log(pattern.exec(str));

分组

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

代码语言:javascript复制
        var str = "<div>我是{{name}}</div>"
        var pattern = /{{([a-zA-Z] )}}/
        var result = pattern.exec(str)
        console.log(result);

字符串的replace函数

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

代码语言:javascript复制
var result='123456'.replace('123','abc') //得到result的值为字符串’abc456‘

示例:

代码语言:javascript复制
        var str = '<div>我是{{name}}</div>'
        var pattern = /{{([a-zA-Z] )}}/

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

多次replace

代码语言:javascript复制
        var str = '<div>{{name}}今年{{age}}岁</div>'
        var pattern = /{{s*([a-zA-Z] )s*}}/
        //第一次匹配
        var res1 = pattern.exec(str)
        str = str.replace(res1[0], res1[1])
        console.log(str);//<div>name今年{{age}}岁</div>

        //第二次匹配
        var res2 = pattern.exec(str)
        str = str.replace(res2[0], res2[1]);
        console.log(str);//<div>name今年age岁</div>

        //第三次匹配
        var res3 = pattern.exec(str)
        console.log(res3);//null

使用while循环replace

代码语言:javascript复制
        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);//输出<div>name今年age岁</div>

replace替换为真值

代码语言:javascript复制
        var data = { name: '张三', age: 20 }
        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);//输出<div>张三今年20岁</div>

0 人点赞