我正在尝试在包含var exp = "foo"
* 的大型stringText
中搜索表达式(exp
),但不包括以“<”开头的所有内容并以“>”
现在我知道怎么写这样:
var regexp = new RegExp(exp, 'g');
match = regexp.exec(stringText)
如何编写排除条件?
我知道它应该是/<.+>/g
,但我该如何组合呢?我知道这不对,但我该怎么做?
var regexp = new RegExp(exp + /<.+>/, 'g');
谢谢,Alon
==更新===
我想在这个字符串中搜索'a':
"a dog <span class="something"> had a </span> and a cat"
我想要它打第一个'a','a'里面的'a',之后的'a'和''和'''''''中的'a'
我不想在'span'或'class'中获得'a'或者在&lt;&gt;
中翻译答案 0 :(得分:1)
如果你想解析html / xml,我认为你应该寻找除正则表达式以外的东西。比我更好的男人explained why。
如果你一直在使用正则表达式,或者你的问题不能保证更强大的解决方案,我建议你做这样的事情,因为JS没有看起来很好看:
var input = "a dog <span class='something'> had a </span> and a cat";
// Remove anything tag-like
var temp = input.replace(/<.+?>/g, "");
// Perform the search
var matches = new RegExp(exp, "g").exec(temp);
或者一个班轮:
var matches = new RegExp(exp, "g").exec(input.replace(/<.+?>/g, ""))
答案 1 :(得分:0)
你想要什么似乎是消极的回顾和前瞻。不幸的是,javascript中没有回顾。只是前瞻。
E.g。
/foo(?!bar)/g
将与foo
中的the foo fighters
匹配,但与foo
中的the foobar solution
不匹配
所以你可能想要像
这样的东西/foo(?!>)/g
你可以在http://www.regular-expressions.info/lookaround.html#lookahead和http://www.regular-expressions.info/javascript.html上的javascript正则表格上学习前瞻
答案 2 :(得分:0)
也许你想要的东西最容易通过首先删除(用空字符串替换)所有html标签的出现来实现,例如这个
var tmp = exp.replace(/<[^>]+>/g, '');
然后,您可以轻松匹配正则表达式,在新的临时无html字符串中查找。