我已经看到了一些其他类似的问题,但我似乎无法让它发挥作用。我想要做的是在JavaScript匹配一个带有问题编号的字符串。我有一部分工作正常,但如果它以target='_blank'>
开头,我不想匹配它。
这些应该匹配......
Issue# 123
Issue #123
Issue 123
Issue no 123
Issue number 123
Issue: 123
这些不应该......
target='_blank'>Issue# 123
target='_blank'>Issue #123
target='_blank'>Issue 123
target='_blank'>Issue no 123
target='_blank'>Issue number 123
target='_blank'>Issue: 123
到目前为止我所拥有的是
(?!target='_blank'>)(issue(?: number| no)?[ #:]?[ #]?([0-9]+))
但它仍然与它不应该匹配的那些相匹配。
任何帮助都会很棒。
答案 0 :(得分:1)
试试这个:^(Issue(?: number| no)?[ #:]?[ #]?([0-9]+))
(未经测试)
如果您正在尝试使用Regex解析HTML。请不要,请使用DOM
答案 1 :(得分:1)
当你应该使用负面看时,你正在使用负向前看。
(?<!target='_blank'>)(issue(?: number| no)?[ #:]?[ #]?([0-9]+))
请注意?<!
而不是?!
。
答案 2 :(得分:0)
通过关于“不用正则表达式解析HTML”的常规演讲,...如果你使用的是jQuery,你可以做类似的事情
$("a[target!='_blank']").each(function() {
if(/yourregex/.match($(this).text()) {
// do whatever
}
});
这可能“不会编译”,但这是一般的想法。
答案 3 :(得分:0)
谢谢你们,
我最终要做的是建议here,并反转字符串和我的正则表达式,并使用前瞻。
所以我的新正则表达式是
(([0-9]+)[ #]?[ #:]?(?:rebmun |on )?eussi)(?!>'knalb_'=tegrat)
跛。