簡體   English   中英

如何在JavaScript中使用正則表達式來匹配帶雙引號的字符串

[英]How to use regex in javascript to match a string with double quotes

我對regex很陌生,我不確定如何使用regex從很大的字符串中提取測試。

假設字符串是這樣的: 僅供參考:該字符串將動態生成,以從數據庫和dom中提取不同的元素。 我對其創建方式沒有太多控制權。

Lorem ipsum dolor坐下,一直保持着上風。 Voluptas architecto dicta amet cumque,atque,labe eos nobis earum fuga tempore officiisexcepturi rerum placeat。 Perferendis,無花果葉蜂葯,無花果類似物,必需品和類似品。 <span itemprop="itemNum">56789</span>勞動者,除了反芻動物放置。 Perferendis,無花果葉蜂葯,無花果類似物,必需品和類似品。

我需要獲取具有標有itemNum的itemprop的跨度內的文本。

我嘗試了這個,但是對我不起作用:

/\b(itemprop=\"sku\"")\b/g

最終,我將只有56789個變量。

謝謝大家。

如果不必使用正則表達式,則可以達到獲取值的目的的一種方法是使用DOMParser首先解析字符串,然后使用例如querySelect來獲取元素:

 const str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas architecto dicta amet cumque, atque, labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis. <span itemprop="itemNum">56789</span> labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis.'; const parser = new DOMParser(); const doc = parser.parseFromString(str, "text/html"); console.log(doc.querySelector('span[itemprop="itemNum"]').innerHTML) 

基於https://stackoverflow.com/a/14210948/3999647剛剛更新了正則表達式和輸入

 function getMatches(string, regex, index) { index || (index = 1); // default to the first capturing group var matches = []; var match; while (match = regex.exec(string)) { matches.push(match[index]); } return matches; } // Example : var myString = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas architecto dicta amet cumque, atque, labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis. <span itemprop="itemNum">56789</span> labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis.'; var myRegEx = /(<span itemprop="\\w+">)(\\d+)(<\\/span>)/g; // Get an array containing the first capturing group for every match var matches = getMatches(myString, myRegEx, 2); // Log results document.write(matches.length + ' matches found: ' + JSON.stringify(matches)) console.log(matches); 

一種可能的解決方案。

 let str = `Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas architecto dicta amet cumque, atque, labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis. <span itemprop="itemNum">56789</span> labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis.` let op = str.match(/<[^>]+>([^<]+)<\\/[^>]+>/g).map(e=>e.replace(/.*?>(.*)<.*/, "$1")) console.log(op) 

對項目itemprop="itemNum">使用正則表達式lookbehind,對於</ lookahead使用正則表達式,然后捕獲它們之間的任何內容。

 const data = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas architecto dicta amet cumque, atque, labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis. <span itemprop="itemNum">56789</span> labore eos nobis earum fuga tempore officiis excepturi rerum placeat. Perferendis, earum officiis veniam dicta eius aliquid, similique porro quam necessitatibus nobis velit debitis.' const res = data .match(/(?<=itemprop\\="itemNum"\\>).+(?=\\<\\/)/) //returns an array... get first value .shift(); console.log(res); 

暫無
暫無

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

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