第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算JavaScript中正則表達式的匹配數(shù)

計算JavaScript中正則表達式的匹配數(shù)

SMILET 2019-12-15 16:12:17
我想編寫一個正則表達式來計算文本塊中空格/制表符/換行符的數(shù)量。所以我天真地寫了以下內(nèi)容:numSpaces : function(text) {     return text.match(/\s/).length; }由于某些未知原因,它總是返回1。上面的陳述有什么問題?此后,我通過以下方法解決了該問題:numSpaces : function(text) {     return (text.split(/\s/).length -1); }
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

通用模式計數(shù)器


// THIS IS WHAT YOU NEED

const count = (str) => {

  const re = /YOUR_PATTERN_HERE/g

  return ((str || '').match(re) || []).length

}

對于那些來到這里的人來說,他們正在尋找一種通用的方法來計算字符串中正則表達式模式的出現(xiàn)次數(shù),并且如果出現(xiàn)的次數(shù)為零,也不希望它失敗,那么此代碼就是您所需要的。這是一個示范:


/*

 *  Example

 */


const count = (str) => {

  const re = /[a-z]{3}/g

  return ((str || '').match(re) || []).length

}


const str1 = 'abc, def, ghi'

const str2 = 'ABC, DEF, GHI'


console.log(`'${str1}' has ${count(str1)} occurrences of pattern '/[a-z]{3}/g'`)

console.log(`'${str2}' has ${count(str2)} occurrences of pattern '/[a-z]{3}/g'`)

原始答案


初始代碼的問題是缺少全局標(biāo)識符:


>>> 'hi there how are you'.match(/\s/g).length;

4

沒有g(shù)正則表達式的部分,它將僅匹配第一個匹配項并在此停止。


還要注意,您的正則表達式將對連續(xù)的空格計數(shù)兩次:


>>> 'hi  there'.match(/\s/g).length;

2

如果不希望這樣做,則可以執(zhí)行以下操作:


>>> 'hi  there'.match(/\s+/g).length;

1



查看完整回答
反對 回復(fù) 2019-12-16
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

如我先前的回答中所述,您可以RegExp.exec()用來遍歷所有匹配并計算每次匹配;優(yōu)點僅限于內(nèi)存,因為總體而言,它比使用慢約20%String.match()。


var re = /\s/g,

count = 0;


while (re.exec(text) !== null) {

    ++count;

}


return count;



查看完整回答
反對 回復(fù) 2019-12-16
  • 3 回答
  • 0 關(guān)注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號