Javascript 正则表达式来匹配给定regexp不匹配的字符串
我一直在寻找一些答案,但我找不到解决问题的办法: 我有一个regexp,它匹配HTML span标记中的所有内容,包括:Javascript 正则表达式来匹配给定regexp不匹配的字符串,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,我一直在寻找一些答案,但我找不到解决问题的办法: 我有一个regexp,它匹配HTML span标记中的所有内容,包括: <span\b[^>]*>(.*?)</span> 要匹配的单词(“类”)可能位于文本中的任何位置。我试过了 (?!<span\b[^>]*>(.*?)</span>)class (?!]*>(.*)类 但它也一直在搜索标签内部。 我想找到一个只使用regexp的解决方案,而不处理DOM或JQuery。提前感谢
<span\b[^>]*>(.*?)</span>
要匹配的单词(“类”)可能位于文本中的任何位置。我试过了
(?!<span\b[^>]*>(.*?)</span>)class
(?!]*>(.*)类
但它也一直在搜索标签内部。
我想找到一个只使用regexp的解决方案,而不处理DOM或JQuery。提前感谢:)。虽然我不推荐这样做,但我会做如下的事情
(class)(?:(?=.*>)|(?:(?)这并不漂亮,但如果我没弄错的话,这应该可以做你不想做的事情。它是用一个正则表达式完成的,但据我所知,js无法(在不将结果加入循环的情况下)提取结果
正则表达式:/(?:]*>.*)|(.)/g
示例js代码:
var str = '...for there is a class of <span class="highlight">guinea</span> pigs which...',
pattern = /(?:<span\b[^>]*>.*?<\/span>)|(.)/g,
match,
res = '';
match = pattern.exec(str)
while( match != null )
{
res += match[1];
match = pattern.exec(str)
}
document.writeln('Result:' + res);
var str='…因为有一类豚鼠,
模式=/(?:]*>.*)()/g,
火柴
res='';
match=pattern.exec(str)
while(匹配!=null)
{
res+=匹配[1];
match=pattern.exec(str)
}
document.writeln('Result:'+res);
在英语中:对标记表达式或捕获任何字符进行非捕获测试。全局执行此操作以获取整个字符串。结果是为字符串中的每个字符创建一个捕获组,标记除外。如前所述,这很难看-可能会导致大量捕获组-但获得任务完成了
如果您需要在一次调用中发送并检索结果,我必须同意以前的贡献者的意见-这是不可能的!可能的重复您不能这样做。相反,在DOM中的单个文本节点上进行搜索。@Nit:我知道这适用于相当复杂和任意的HTML。我的HTML与我发布的HTML一样简单和可预测ed.谢谢。@torazaburo:情况不一样。我只需要避免使用我贴的标签,而不是一些是和一些不是:)。我不知道关于DOM的apeshiagt,我认为在定义良好的集合的补码中搜索会起作用,但显然我在这里碰到了敏感线;)。在那里。谢谢你。
"... class="highlight"..."
(?!<span\b[^>]*>(.*?)</span>)class
var str = '...for there is a class of <span class="highlight">guinea</span> pigs which...',
pattern = /(?:<span\b[^>]*>.*?<\/span>)|(.)/g,
match,
res = '';
match = pattern.exec(str)
while( match != null )
{
res += match[1];
match = pattern.exec(str)
}
document.writeln('Result:' + res);