[英]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.