2

我在.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”或“VisitorFromItaly”,然后我得到特定数量的访客数。

我想在 javascript 中执行此操作,但不使用任何 .replace 方法。我只需要一个简单的 javascript 正则表达式。我是 javascript 正则表达式的新手,所以我不知道如何转换它。它说javascript不支持lookbehind,这就是使我的.Net正则表达式工作的原因。

任何帮助,将不胜感激。非常感谢提前!!!

4

3 回答 3

2

我不确定我是否理解你......你真的需要一个lookbehind断言吗?

你不能只匹配以下内容吗?

myRegex = /Visitors.{0,100}"value">([0-9,]+)/; // or with /g modifier on the end?
myMatches = myRegex.exec(stringToMatch);

myMatches[0] 包含整个匹配的字符串。myMatches[1] 及更高版本将包含第一个、第二个等捕获组,在正则表达式中用括号表示。在这种情况下,myMatches[1] 包含数字。

由于您似乎不需要在数字之前匹配任何其他内容(除了访客等),我认为您根本不需要后向断言。

于 2009-08-14T01:43:29.560 回答
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!"); 
}
于 2011-05-12T16:26:42.207 回答
0

您是否将此数据作为字符串获取?或者您是否有权访问 DOM 对象(例如 AJAX 响应)?

如果您可以访问后者,我不会打扰正则表达式。

于 2009-08-13T15:53:41.327 回答