Javascript 选择下两位数字,以XXX开头,但不以XXX开头

Javascript 选择下两位数字,以XXX开头,但不以XXX开头,javascript,regex,Javascript,Regex,我正在尝试查找关于文本和宽度值的(因此:50%)。要使用正则表达式选择50%,我必须在正则表达式中添加width=“。因此,width=“\d{2}%将选择width=“50%,但我只需要在第一个正则表达式中选择50% 在第二个选项中,我必须选择(查找)仅abouttext而不是about <tr> <td width="50%">about</td> 关于 用百分比选择宽度值(用“宽度”字搜索,但不选择“宽度”) 仅选择“关于”字符串 您会发现

我正在尝试查找关于文本和宽度值的
(因此:
50%
)。要使用正则表达式选择
50%
,我必须在正则表达式中添加
width=“
。因此,
width=“\d{2}%
将选择
width=“50%
,但我只需要在第一个正则表达式中选择
50%

在第二个选项中,我必须选择(查找)仅
about
text而不是
about

<tr>
    <td width="50%">about</td>

关于
  • 用百分比选择宽度值(用“宽度”字搜索,但不选择“宽度”)
  • 仅选择“关于”字符串

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

    但基本的reg EXP是:

    var reWidth = /width="(\d{1,3}%)"/i;
    var reCellText = /<td[^>]?>([^<]*)/i;
    
    var-reWidth=/width=“(\d{1,3}%)”/i;
    
    var reCellText=/]?>([^我认为您正在寻找look behinds,但不幸的是Javascript不支持look behinds。

    这看起来像

    (?<=width=")\d+
    

    (?一次满足您的两个需求。通过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 <
    
    kent$echo'about'| grep-oP'(?%宽度后的数字=”
    |->或
    (?)[^]*(?=介于>和>之间的任何内容(除了<和>)<
    
    Regex不是这个问题的答案问题根本不清楚,你能提供更多细节吗?谢谢,但它选择了带数字的“宽度”。我想删除“宽度”单词进入结果。reCellText也是选择
    关于
    。然后将“宽度”替换为零。我更新了我的答案,因为你似乎不了解捕获组。你能解释一下这个正则表达式吗?我用解释更新了答案以获得更好的代码格式。我不知道js不支持look behinds。不熟悉js。
    kent$  echo '<td width="50%">about</td>'|grep -oP '(?<=width=")\d+%|(?<=>)[^<>]*(?=<)'
    50%
    about
    
    (?<=width=")\d+%          ->%number after width="
    |                         ->or
    (?<=>)[^<>]*(?=<)         -> anything(besides < and >) between > and <