Javascript 正则表达式-选择不是标记名或属性的单词

Javascript 正则表达式-选择不是标记名或属性的单词,javascript,regex,Javascript,Regex,是否可以选择所有非标记和非标记内的单词作为属性?我已经得到了这个工作的反向,我知道我可以分两个阶段来完成,替换第一个匹配项并进行新的Javascript RegExp搜索。但问题是我想让它用一个表达式工作 (]*>)|({[^>]*}) 输入: <p>Test image captions for GitBook:</p> <p>Second image: <img scr="./image2.png" alt="image title" titl

是否可以选择所有非标记和非标记内的单词作为属性?我已经得到了这个工作的反向,我知道我可以分两个阶段来完成,替换第一个匹配项并进行新的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>
测试GitBook的图像标题:

第二幅图像:asdf{caption width=“300”style=“height:'300px'}

示例文本和第一个图像:{caption width=“300”style=“height:'300px'”}用于测试ok

应匹配的`内的预期输出标记字:

<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>
`Test``image``字幕`for``GitBook`:

`第二个``image`:`asdf`{caption width=“300”style=“height:'300px'}

`示例“文本”和“第一个图像”:{caption width=“300”style=“height:'300px'”}用于“测试”`ok`

您可以尝试以下方法:

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

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

尝试使用
.textContent
String.prototype.replace()
替换为
RegExp
/\{.\}.\\.+\s{2}.\s$/gi

var p=document.getElementsByTagName(“p”),res=[]; 对于(var text=”“,i=0;i

GitBook的测试图像标题:

第二幅图像:asdf{caption width=“300”style=“height:'300px'}


示例文本和第一幅图像:{caption width=“300”style=“height:'300px'”}用于测试ok…

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

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

请看太糟糕了,javascript/nodejs regex不支持负环回…但javascript支持负lookaheads。您可以尝试反转正在处理的字符串和正在匹配的文字字符的顺序,然后以相反的方式使用lookahead。您可能会感兴趣,感谢您提供的好资源,他们会的在研究正则表达式秘密时非常有用!我发布了我的解决方案作为答案,因为我在问了问题后碰巧找到了解决方案。当然,在OT之前的几个小时的测试。是的,但我仍然不会尝试用正则表达式解析HTML。有许多格式错误的HTML结构很容易损坏任何正则表达式逻辑,因为HTML需要首先清理,以转换不匹配的标记、尖括号、不匹配的引号、不匹配的脚本tgs等。然后,一旦清理完成,将噪声转换为实体,您可以期望处理一个结构,该结构可以很好地为RegExp解析。即使如此,它也可能变得复杂。我建议使用som类似于
((?!([^<]+)?>)([\w]+)(?!([^\{]+)?\})([\w]+))