我尝试编写一个正则表达式代码来从段落中选择单词,而不是从链接中选择单词,即使段落包含链接也是如此。我已经为:<p>this <a href="">is a just a test</a>text</p>尝试了这个正则表达式代码:<p.*?>(.*?)test(.*?)<\/p>
但是我的代码也选择了<a....../a>中的内容。是否可以仅从<p>选择单词,而不从<a>选择单词。如果是,那是怎么做的?
发布于 2021-11-01 21:38:17
一种相对简单但不是万无一失的方法是,如果字符串中"</a>"出现在"<a "之前,则使用否定的先行查找来防止匹配。
(?!(?:(?!<a\s).)*</a>)将其包含在您想要匹配的模式之前,例如,\bte[sx]t\b,它本身通常会同时匹配"test"和"text"。
const s = '<p>this <a href="">is a just a test</a>text</p>';
console.log(
s.match(/(?!(?:(?!<a\s).)*<\/a>)\bte[sx]t\b/g)
);
https://stackoverflow.com/questions/69802306
复制相似问题