我对regex非常陌生,我不知道如何使用regex从一个非常大的字符串中提取一段测试。
假设字符串是: FYI:该字符串将动态生成,从数据库和dom中提取不同的元素。我对它是如何创建的没有太多的控制。
同坐,圣洁,长生不老。建筑风格:建筑风格;[医]耳,[医][医],[医][医].
<span itemprop="itemNum">56789</span>labore eos nobis earum fuga tempore rerum placeat.[医]耳,[医][医],[医][医].
我需要在span中得到标记为itemNum的项目项的文本。
我试过了,但对我没有用:
/\b(itemprop=\"sku\"")\b/g最终,我的变量只有56789。
先谢谢大家。
发布于 2019-01-26 17:33:46
如果不一定要使用regex,则实现获取值的目标的一种方法是首先使用DOMParser解析字符串,然后使用e.g 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)
发布于 2019-01-26 17:32:35
基于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);
发布于 2019-01-26 17:33:15
一个可能的解决方案。
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)
https://stackoverflow.com/questions/54380774
复制相似问题