Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式来匹配给定regexp不匹配的字符串_Javascript_Regex_Regex Negation - Fatal编程技术网

Javascript 正则表达式来匹配给定regexp不匹配的字符串

Javascript 正则表达式来匹配给定regexp不匹配的字符串,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,我一直在寻找一些答案,但我找不到解决问题的办法: 我有一个regexp,它匹配HTML span标记中的所有内容,包括: <span\b[^>]*>(.*?)</span> 要匹配的单词(“类”)可能位于文本中的任何位置。我试过了 (?!<span\b[^>]*>(.*?)</span>)class (?!]*>(.*)类 但它也一直在搜索标签内部。 我想找到一个只使用regexp的解决方案,而不处理DOM或JQuery。提前感谢

我一直在寻找一些答案,但我找不到解决问题的办法:

我有一个regexp,它匹配HTML span标记中的所有内容,包括:

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