【问题标题】:JavaScript RegEx for extracting value from HTML tag用于从 HTML 标签中提取值的 JavaScript RegEx
【发布时间】:2011-09-12 09:58:48
【问题描述】:
<font color="green">+4,13</font>% 

我知道我不应该为此使用正则表达式,但这是我唯一的 html 的单一情况......

我怎样才能从上面的字符串中得到“4,13”?

编辑

上下文:

我正在通过 jQuery TableSorter 对表格进行排序。一列包含该 html 格式的数据,我无法更改它。我正在编写的自定义解析器有一个格式功能,我目前用于管理货币、百分比等...

现在,我想用正则表达式检查我收到的字符串是否是字符串。

format: function(s) {
    console.log(s);
    var stripped = s.replace("<font>","")
                     .replace("</font>", "");
    return jQuery.tablesorter.formatFloat(stripped);
}

【问题讨论】:

  • 请更清楚您所说的“条带化”或“获取”值是什么意思?
  • +1 关于知道不使用正则表达式的免责声明:P
  • 需要更多上下文。这个字符串是从哪里来的? Javascript 是否在浏览器中运行?它如何加载字符串,以及它对字符串还有什么作用?等
  • 我更新了我的答案以满足您的更新。

标签: javascript html regex tags


【解决方案1】:

这应该适用于您的具体示例 -

var tagtext = '<font color="green">+0.00</font>%';
var keepplusorminus = false;
var myregexp = keepplusorminus ? /[-\+,\.0-9]+/ : /[,\.0-9]+/;
var match = myregexp.exec(tagtext);
if (match != null) {
    result = match[0];
} else {
    result = "";
}
alert(result);

工作演示 - http://jsfiddle.net/ipr101/LHBp7/

【讨论】:

  • 我可以有“+4,13”或“0.00”或再次“-7,698”。我该如何修改它?
  • 我刚刚更新了答案,我已经更改了正则表达式,因此它可以接受句号和逗号。
  • 最后一件事,好心人 :))) 我怎样才能“保持”正负(可选设置)?
  • @Fabio 你知道这个正则表达式[,\.0-9]+ 也会匹配一个字符串,如 ,,,,,,,,,, 或 ,.123.,,342 吗?
  • 答案再次更新,设置布尔值“保持”正负
【解决方案2】:

编辑

如果你只是想匹配数字

[+-]?\d+(?:[,.]\d+)?

here on Regexr

匹配可选的 + 或 - 然后是至少一个数字,然后是可选的小数和 .或 a , 作为分数分隔符。

/编辑

试试这样的

<font color="green">([^<]+)

然后您将在捕获组 1 中找到值“+4,13”。

here on Regexr

如果您想排除 + 而不是在捕获组之前添加它(可能是可选的)

<font color="green">\+?([^<]+)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多