利用正規表示式提取固定字元之間的字串

懷特然後發表於2022-03-14

前言

在JS的正則零寬斷言匹配中,只支援前瞻匹配,不支援後瞻。這就尷尬了,因為在業務當中,我們大多時候是知道了要目標資料的前字尾字串,但是並不想連同前字尾一起獲取。

為了模擬後瞻,我想,要不就用笨方法,先將前字尾字串一同提取,然後再講前字尾字串一同replace為空字串。於是就有了下面這個簡單的方法,但確實很實用:

示例程式碼如下

// 提取固定字元之間的字串
function getInnerString(source, prefix, postfix) {
 var regexp = new RegExp(encodeReg(prefix) + '.+' + encodeReg(postfix), 'gi');
 var matches = String(source).match(regexp);
 var formatedMatches = _.map(matches, value => {
  return value
   .replace(prefix, '')
   .replace(postfix, '');
 });
 return formatedMatches;
}
//轉義影響正則的字元
function encodeReg(source) {
 return String(source).replace(/([.*+?^=!:${}()|[\]/\\])/g,'\\$1');
}

使用:

var a = '讓我們蕩起雙槳吧';
getInnerString(a, '讓我們', '吧'); // ['雙槳']
var b = '老總和不在辦公室,有事請留言給李祕書';
getInnerString(b, '有事請留言給', ''); // ['李祕書']

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015107/viewspace-2870906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章