正規表示式提取指定字元之間字串

admin發表於2018-08-05

分享一段程式碼例項,它實現提取指定字元之間字串的功能。

程式碼例項如下:

[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()一章節。

相關文章