在HTML中的静态模式之间获取字符串

时间:2018-09-19 06:12:24

标签: javascript jquery html

我有一个String,上面有一些HTML文本。 我想要一个可以在特定模式之间提取字符串的脚本。

示例: 假设HTML文本是否具有:

<p translate="index_word1" > </p>

输出应为: index_word1

基本上希望在translate =“ 此字符串”之间输入一个字符串。 在网上搜索了此内容,找不到任何答案。

3 个答案:

答案 0 :(得分:0)

您可以使用DOMParser将字符串转换为文档,然后可以在其上querySelectorAll查找具有translate属性的元素:

const str = `<p translate="index_word1" > </p>
<strong translate="index_word2"></strong>`;
new DOMParser()
  .parseFromString(str, 'text/html')
  .querySelectorAll('[translate]')
  .forEach(element => console.log(element.getAttribute('translate')));

答案 1 :(得分:0)

如果您的情况是m[1]

const regex = /translate="(.+)"/gm;
const str = `<p translate="index_word1" > </>
<strong translate="index_word2"></strong>`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
    // Your case
    console.log(`Your case: ${m[1]}`)
}

答案 2 :(得分:0)

您可以使用地图提取translate属性:

$("[translate]").map(function(i, el) { return $(this).attr("translate"); }

从字符串中读取示例:

var s = '<p translate="index_word1"><p/><strong translate="index_word2"></strong>';

var html = $("<div>").append(s);
var arr = $("[translate]", html).map(function(i, el) { return $(this).attr("translate"); }).toArray();
console.log(arr);

$.each(arr, function(i) { $("#out").append(arr[i] + "<br/>"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="out"></div>