是否可以选择不是标签而不是内部标签的所有单词作为属性?我有这个工作逆,我知道我可以分两个阶段,替换第一个匹配并进行新的Javascript RegExp搜索。但问题是我想用一个表达式来实现它。
(<[^>]*>)|({[^>]*})
输入:
<p>Test image captions for GitBook:</p>
<p>Second image: <img scr="./image2.png" alt="image title" title="image title">asdf</img>{caption width="300" style="height:'300px'"} </p>
<p>Sample text and first image: <img scr="./image1.png" alt="image 1" /> {caption width="300" style="height:'300px'"} for testing ok...</p>
应该匹配的`内部的预期输出标记词:
<p>`Test` `image` `captions` `for` `GitBook`:</p>
<p>`Second` `image`: <img scr="./image2.png" alt="image title" title="image title">`asdf`</img>{caption width="300" style="height:'300px'"} </p>
<p>`Sample` `text` `and` `first` `image`: <img scr="./image1.png" alt="image 1" /> {caption width="300" style="height:'300px'"} `for` `testing` `ok`...</p>
答案 0 :(得分:1)
我的问题可能不太清楚,因为答案是使用javascript代码来处理匹配。我的目的是找到只有简单表达的解决方案。我终于找到了满足我需求的表达式:
((?!([^<]+)?>)([\w]+)(?!([^\{]+)?\})([\w]+))
答案 1 :(得分:0)
你可以试试这个:
var words = [];
$(function () {
$("p").each(function () {
words.concat($(this).text().split(" "));
});
});
现在words
数组包含所有单词。
答案 2 :(得分:0)
尝试使用.textContent
,String.prototype.replace()
与RegExp
/\{.*\}|:|\.+|\s{2}|\s$/gi
var p = document.getElementsByTagName("p"), res = [];
for (var text = "", i = 0; i < p.length; i++) {
res[i] = p[i].textContent.replace(/\{.*\}|:|\.+|\s{2}|\s$/gi, "")
}
console.log(res)
<!--
<p>`Test` `image` `captions` `for` `GitBook`:</p>
<p>`Second` `image`: <img scr="./image2.png" alt="image title" title="image title">`asdf`</img>{caption width="300" style="height:'300px'"} </p>
<p>`Sample` `text` `and` `first` `image`: <img scr="./image1.png" alt="image 1" /> {caption width="300" style="height:'300px'"} `for` `testing` `ok`...</p>
-->
<p>Test image captions for GitBook:</p>
<p>Second image: <img scr="./image2.png" alt="image title" title="image title">asdf</img>{caption width="300" style="height:'300px'"} </p>
<p>Sample text and first image: <img scr="./image1.png" alt="image 1" /> {caption width="300" style="height:'300px'"} for testing ok...</p>