我在.Net
中有以下正则表达式(?<=Visitors.{0,100}?"value">)[0-9,]+(?=</div>)
以及以下文字
<div class="text">Visitors</div> <div class="value">14,000,000</div>
<div class="text">VisitorsFromItaly</div> <div class="value">15,200</div>
我在正则表达式中指定“Visitors”或“VisitorsFromItaly”,我得到具体访问者数量的数字。
我想在javascript中执行此操作,但不使用任何.replace方法。我只需要一个简单的javascript正则表达式。我是javascript正则表达式的新手,所以我不知道如何转换它。它说javascript不支持lookbehind,这就是让我的.Net正则表达式工作的东西。
任何帮助将不胜感激。非常感谢提前!!!
答案 0 :(得分:2)
我不确定我是否理解你......你真的需要一个后视断言吗?
你能不能匹配以下内容?
myRegex = /Visitors.{0,100}"value">([0-9,]+)/; // or with /g modifier on the end?
myMatches = myRegex.exec(stringToMatch);
myMatches [0]包含整个匹配的字符串。 myMatches [1]和更高版本将包含第一个,第二个等捕获组,在正则表达式中用括号表示。在这种情况下,myMatches [1]包含数字。
由于您似乎不需要在数字之前匹配任何其他内容(除了访问者等),我认为您根本不需要一个lookbehind断言。
答案 1 :(得分:1)
试一试:
var regex = /visitors<\/div>\s?<div class="value">([\d,]+)/i;
var input = '<div class="text">Visitors</div> <div class="value">14,000,000</div><div class="text">VisitorsFromItaly</div> <div class="value">15,200</div>
';
if(regex.test(input)) {
var match = input.match(regex);
alert(match);
} else {
alert("No matches found!");
}
答案 2 :(得分:0)
您是将这些数据作为字符串获取的吗?或者您是否可以访问DOM对象(例如AJAX响应)?
如果您可以访问后者,我不会打扰正则表达式。