正则表达式提取指定字符之间字符串

2018-5-7 23:30| 发布者: admin| 查看: 241| 评论: 0|来自: 蚂蚁部落

分享一段代码实例,它实现提取指定字符之间字符串的功能。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
let encodeReg=(source)=>{
  return String(source).replace(/([.*+?^=!:${}()|[\]/\\])/g,'\\$1');
}
let getInnerString = (source, prefix, postfix) => {
  let regexp = new RegExp(encodeReg(prefix) + '.+' + encodeReg(postfix), 'gi');
  let matches = String(source).match(regexp);

  let  func=(elem)=>{
    return elem.replace(prefix, '').replace(postfix, '');
  }
  let arr=matches.map(func)
  return arr;
}
let str = "蚂蚁部落欢迎您";
console.log(getInnerString(str,"蚂","您"));

上面代码实现了预期效果,下面介绍一下它的实现过程。

一.代码注释:

[JavaScript] 纯文本查看 复制代码
let encodeReg=(source)=>{
  return String(source).replace(/([.*+?^=!:${}()|[\]/\\])/g,'\\$1');
}

对字符串中可能影响正则表达式匹配的特殊字符进行转义,比如"\"转换为"\\"。

[JavaScript] 纯文本查看 复制代码
let getInnerString = (source, prefix, postfix) => {
  // code
}

此方法实现了获取指定字符间字符串的功能,返回值是存储指定字符之间字符串的数组。

[JavaScript] 纯文本查看 复制代码
let regexp = new RegExp(encodeReg(prefix) + '.+' + encodeReg(postfix), 'gi');

创建一个正则表达式对象,它能够匹配两个指定字符串和它们之间的字符串。

[JavaScript] 纯文本查看 复制代码
let matches = String(source).match(regexp);

进行匹配操作,返回值是一个数组。

[JavaScript] 纯文本查看 复制代码
let  func=(elem)=>{
  return elem.replace(prefix, '').replace(postfix, '');
}

将两端的字符替换为空,只保留指定字符串之间的字符串。

[JavaScript] 纯文本查看 复制代码
let arr=matches.map(func)

对数组进行遍历操作。

二.相关阅读:

(1).replace()参阅正则表达式 replace()一章节。

(2).RegExp()参阅正则表达式 创建一章节。

(3).match()参阅正则表达式 match()一章节。

(4).map()参阅JavaScript map()一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部