簡體   English   中英

Javascript字符串匹配多次出現

[英]Javascript String match with multiple occurrences

嗨,伙計們,我正在嘗試在 javascript 中編寫此函數以提醒與我正在查找的字符串匹配的 ( text ),因此如果字符串是 (number 5656),則代碼將查找在單詞 ( number) 並提醒客戶,所以問題是我需要代碼單獨打印每個數字,就像字符串是(數字 5656 數字 4646)一樣,我希望它單獨提醒所有數字,所以我嘗試了這個

({ data: { text } }) => { var rx = new RegExp( '\\s(\\w+)' ); var txt = text; var mtc = []; while( (match = rx.exec( txt )) != null ) { alert( match[1] ); mtc.push(match[1]); } })

它對字符串后面的數字發出無限警報,而不僅僅是兩次

目前,您總是會發現相同的事件。 您可以添加全局標志或粘性標志來存儲最后一次出現的位置並搜索下一次出現:

({ data: { text } }) => { var rx = new RegExp( '\\s(\\w+)', 'g' ); var txt = text; var mtc = []; while( (match = rx.exec( txt )) != null ) { alert( match[1] ); mtc.push(match[1]); } }

JavaScript RegExp對象在設置了全局或粘性標志時是有狀態的(例如/foo/g/foo/y )。

MDN

 const f = ({ data: { text } }) => { var rx = new RegExp( '\\s(\\w+)', 'g' ); var txt = text; var mtc = []; while( (match = rx.exec( txt )) != null ) { alert( match[1] ); mtc.push(match[1]); } }; f({ data: { text: 'number 5656 number 4646' } });

您可以使用String.match()使用全局標志 ( g ) 搜索 1 個或多個數字 ( \d+ ) 的組。 然后循環匹配並提醒他們。

 let input = 'number 5656 number 4646'; let matches = input.match(/(\d+)/g); matches.forEach(m => alert(m));

由於這顯然與您關於 tesseract.js 的其他問題有關,因此我將添加這個完整的示例:

Tesseract.recognize(image,lang).then(result => {
  let matches = result.data.text.match(/(\d+)/g);
  matches.forEach(m => alert(m));
});

暫無
暫無

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

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