RegEx - 选择不是标签名称或属性的单词

时间:2015-12-03 06:29:53

标签: javascript regex

是否可以选择不是标签而不是内部标签的所有单词作为属性?我有这个工作逆,我知道我可以分两个阶段,替换第一个匹配并进行新的Javascript RegExp搜索。但问题是我想用一个表达式来实现它。

http://regexr.com/3cb6g

(<[^>]*>)|({[^>]*})

输入:

<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>

3 个答案:

答案 0 :(得分:1)

我的问题可能不太清楚,因为答案是使用javascript代码来处理匹配。我的目的是找到只有简单表达的解决方案。我终于找到了满足我需求的表达式:

((?!([^<]+)?>)([\w]+)(?!([^\{]+)?\})([\w]+))

http://regexr.com/3cb6j

答案 1 :(得分:0)

你可以试试这个:

var words = [];
$(function () {
  $("p").each(function () {
    words.concat($(this).text().split(" "));
  });
});

现在words数组包含所有单词。

答案 2 :(得分:0)

尝试使用.textContentString.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>