簡體   English   中英

javascript 正則表達式匹配兩個字符串並計算其中的字符數

[英]javascript regex match between two strings and count the number of characters inside

我對 js 和編程很陌生,我會很感激一些幫助。

假設我有以下數組(它是一個單元素數組,它們不是單獨的元素)

var array =
[
     'Foo\n' +
      'bar23123\n' +
      'barbarfoo\n' +
      'foo, bar foo\n' +
      'foo\n' +
      '\n' +
      '\n' +
      'Bar\n' +
      '\n' +
      '\n'
  ]

假設數組中有多個元素,我如何編寫一個正則表達式來計算和匹配每個元素中 Foo\n 和 Bar\n 之間的文字 '\n' 的數量。

我編寫了一個部分解決方案來迭代並返回所有 \n 的計數,但是如何縮小搜索范圍以僅返回兩個字符串之間的值?

這是代碼:

let slashN = [];
for(let slash of array){
   var reg = RegExp('\\n' , 'g')
  slashN.push(slash.match(reg).length)
}

console.log(slashN);

我得到了正確的計數,但我想改進正則表達式。

非常感謝任何幫助。

您可以使用

var reg = /(?<=Foo\n.*?)\n(?=.*?Bar\n)/gs;

請參閱正則表達式演示 詳情

  • (?<=Foo\n.*?) - 一個正向的向后查找,它匹配緊接在Foo + 換行符之前的位置,然后是任何 0 個或多個字符,盡可能少
  • \n - 換行符
  • (?=.*?Bar\n) - 一個正向前瞻,它與緊隨其后的任何 0+ 字符盡可能少的位置匹配,然后是Bar + 換行符。

JavaScript 演示:

 var array = [ 'Foo\n' + 'bar23123\n' + 'barbarfoo\n' + 'foo, bar foo\n' + 'foo\n' + '\n' + '\n' + 'Bar\n' + '\n' + '\n' ]; let slashN = []; for(let slash of array){ var reg = /(?<=Foo\n.*?)\n(?=.*?Bar\n)/gs; slashN.push(slash.match(reg).length) } console.log(slashN);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM