我有一个String
,上面有一些HTML文本。
我想要一个可以在特定模式之间提取字符串的脚本。
示例: 假设HTML文本是否具有:
<p translate="index_word1" > </p>
输出应为:
index_word1
基本上希望在translate =“ 此字符串”之间输入一个字符串。 在网上搜索了此内容,找不到任何答案。
答案 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>