首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript中的regex将字符串与双引号匹配

如何使用javascript中的regex将字符串与双引号匹配
EN

Stack Overflow用户
提问于 2019-01-26 17:20:28
回答 4查看 62关注 0票数 0

我对regex非常陌生,我不知道如何使用regex从一个非常大的字符串中提取一段测试。

假设字符串是: FYI:该字符串将动态生成,从数据库和dom中提取不同的元素。我对它是如何创建的没有太多的控制。

同坐,圣洁,长生不老。建筑风格:建筑风格;[医]耳,[医][医],[医][医].<span itemprop="itemNum">56789</span> labore eos nobis earum fuga tempore rerum placeat.[医]耳,[医][医],[医][医].

我需要在span中得到标记为itemNum的项目项的文本。

我试过了,但对我没有用:

代码语言:javascript
复制
/\b(itemprop=\"sku\"")\b/g

最终,我的变量只有56789。

先谢谢大家。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-01-26 17:33:46

如果不一定要使用regex,则实现获取值的目标的一种方法是首先使用DOMParser解析字符串,然后使用e.g querySelect获取元素

代码语言:javascript
复制
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)

票数 4
EN

Stack Overflow用户

发布于 2019-01-26 17:32:35

基于https://stackoverflow.com/a/14210948/3999647刚刚更新了正则表达式和输入

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2019-01-26 17:33:15

一个可能的解决方案。

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54380774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档