选择接下来的2位数字以XXX开头,但不是XXX

时间:2011-09-26 12:48:51

标签: javascript regex

我正在尝试查找about文字和宽度值(所以:50%)。要使用正则表达式选择50%,我必须在正则表达式中添加width="。因此,width="\d{2}%会选择width="50%,但我需要在第一个中仅选择50%

在第二个中,我必须选择(查找)仅about文字而不是<td>about

<tr>
    <td width="50%">about</td>
  1. 选择带百分比的宽度值(使用“宽度”字搜索但不选择“宽度”)。
  2. 仅选择“约”字符串

3 个答案:

答案 0 :(得分:4)

你会发现使用正则表达式解析HTML几乎是不可能的。

但基本的reg exps将是:

var reWidth = /width="(\d{1,3}%)"/i;
var reCellText = /<td[^>]?>([^<]*)/i;

[编辑]

根据您的评论猜测,您不了解捕获组。

var str = '<td width="25%">';
var myMatch = str.match(reWidth);
if(myMatch){
    alert( myMatch[1] );
}

答案 1 :(得分:3)

我认为你正在寻找外观,但不幸的是 Javascript不支持外观。

这看起来像

(?<=width=")\d+

并且只匹配数字。

我认为你应该更多地解释你想要实现的目标(为什么要这样做)以获得适当的答案。我不确定正则表达式是否是这里的解决方案。

答案 2 :(得分:1)

满足您的两项要求。用grep测试:

kent$  echo '<td width="50%">about</td>'|grep -oP '(?<=width=")\d+%|(?<=>)[^<>]*(?=<)'
50%
about

(?<=width=")\d+%          ->%number after width="
|                         ->or
(?<=>)[^<>]*(?=<)         -> anything(besides < and >) between > and <