Javascript regext不工作
我有一个包含如下内容的网站。我想获得activategoldodgbrmJavascript regext不工作,javascript,regex,Javascript,Regex,我有一个包含如下内容的网站。我想获得activategoldodgbrm App Namespace</span></div><div class="fsm fcb">activategoldodgbrm</div> App namespaceActivateGoldGBRM 我尝试了下面的代码,但它说匹配不起作用 var pattern = /App Namespace<\/span><\/div><div cl
App Namespace</span></div><div class="fsm fcb">activategoldodgbrm</div>
App namespaceActivateGoldGBRM
我尝试了下面的代码,但它说匹配不起作用
var pattern = /App Namespace<\/span><\/div><div class="fsm fcb">(.*?)<\/div>/gm;
var match;
while (match = pattern.exec(src)) {
alert(match[1]);
}
var模式=/App名称空间(.*)/gm;
var匹配;
而(match=pattern.exec(src)){
警报(匹配[1]);
}
注意:src包含我的页面源您尚未指定任何匹配项
var a;
if(a==1){...}
alert(a); // a is null
所以试试这个
var pattern = /App Namespace<\/span><\/div><div class="fsm fcb">(.*?)<\/div>/gm;
var match;
while (match = pattern.exec(src)) { // using "=" instead of "=="
alert(match[1]);
}
var模式=/App名称空间(.*)/gm;
var匹配;
而(match=pattern.exec(src)){//使用“=”而不是“=”
警报(匹配[1]);
}
请从关于==和=运算符的答案中抽象出来,这是一些误解。首先,我认为你不需要这么复杂的正则表达式。其次,你不需要运行循环。选中此项:
var src = 'App Namespace</span></div><div class="fsm fcb">activategoldodgbrm</div>';
alert(/class="fsm fcb">(.+?)</gm.exec(src)[1]);
var src='App namespaceActivateGoldGBRM';
警报(/class=“fsm fcb”>(.+?)我认为您只是误解了m
修饰符。它确实给您提供了在几行上匹配某些内容的机会,但您必须处理新行(\r\n
或\n
)
考虑这个例子:
"</span>\n</div>".match(/.*/m);
(包括许多新线)
作为旁注,点
不会捕捉新行字符。在您的src中没有换行符?使用DOM选择器查找该字符不是更好吗?他是根据@user125697之前的回答这样做的这起作用的adfasdgadg asdfasdg asdf App Namespace abd App Namespace 1212 var pattern=/App Namespace(.*)/gm;var match;while(match=pattern.exec(document.body.innerHTML)){alert(match[1]);}
您只是为您的src举了一个最具体的例子。我想这在大多数情况下都不起作用。不起作用,在网站中,有一个或多个,所以我需要整个应用程序名称空间的正则表达式,所以它不是字符串,而是DOM节点树。您肯定应该使用节点遍历。src是包含应用程序名称空间ActivateGol的页面源dodgbrm,您的模式不起作用。好吧,我要一个JSFIDLE。因为当我们没有足够的数据时,我们可能无法修复这个问题。
"</span>\n</div>".match(/(.|\r?\n)*/m);
var pattern = /App Namespace(?:\r?\n)*<\/span>(?:\r?\n)*<\/div>(?:\r?\n)*<div class="fsm fcb">(?:\r?\n)*(.*?)(?:\r?\n)*<\/div>/gm;