【问题标题】:Using javascript and maybe regex to get numbers out text使用 javascript 和正则表达式从文本中获取数字
【发布时间】:2013-06-27 12:50:28
【问题描述】:

我正在尝试从下面的示例中的文本中获取可变数字是文本。

Koop 5 voor € 16,00 p/s en bespaar 11%
Koop 50 voor € 15,00 p/s en bespaar 17%
Koop 120 voor € 13,00 p/s en bespaar 28%
Koop 1000 voor € 10,00 p/s en bespaar 45%

这意味着Buy X for $Y each and save Z%

我需要用 jQuery 或 Javascript 从这个文本中取出 X。

下面是代码,用于从 A 标签中获取文本

 $(function(){
    $('.link').click(function() {
        $("#input-field").val($(this).html());
    });
});

以及示例标签和输入字段:

<input id="input-field" type="text">

<a href="#" class="link">koop 10 voor 10 p.s.<a>
<a href="#" class="link">koop 110 voor 9 p.s<a>
<a href="#" class="link">koop 950 voor 7 p.s<a>

【问题讨论】:

  • 你尝试过的正则表达式是什么?
  • 现在的文字到底是什么?您的两个示例集看起来非常不同。还是应该正则表达式处理所有这些?
  • 字符大小是什么意思?如果在第一个空格上拆分,则在这两个示例中,它都是结果数组中的第二个元素(索引 1)。
  • 最终达到 10,100,1000,10000。所以它应该得到 Koop 之后的所有数字,直到我猜的下一个空格。
  • 你是对的,这可能会奏效,如果你回答它,请投票

标签: javascript jquery html regex


【解决方案1】:

使用正则表达式,您可以这样做:

$("#input-field").val( $(this).html().match(/\d+/)[0] );

...也就是说,使用/\d+/ 选择字符串中的第一个或多个数字,其中.match() 返回一个数组,因此您需要获取数组中的第一个(也是唯一一个)元素。

演示:http://jsfiddle.net/WnruN/

或者你可以直接使用.split():

$("#input-field").val( $(this).html().split(" ")[1] );

也就是说,选择第二个“单词”(在你的例子中是一个数字)。

演示:http://jsfiddle.net/WnruN/1/

请注意,如果您通过添加 g 标志 - /\d+/g 使您的正则表达式全局化 - 那么 .match() 将返回输入字符串中所有数字的数组:http://jsfiddle.net/WnruN/2/(如果您想允许对于带有逗号的数字,例如您的第一个示例,请使用 /[\d,]+/g: http://jsfiddle.net/WnruN/3/)

【讨论】:

  • 只要确保如果你改变了字符串的顺序,你也会更新正则表达式!
  • .match(/ \d+ /),因为它是唯一一个前后有空格的数字:P
  • @ᾠῗᵲᄐᶌ - 在问题末尾的标记中,两个数字都有空格。在任何情况下(根据我的更新),您都可以让正则表达式选择输入字符串中的所有数字,.match() 会将它们作为数组返回。
  • @nnnnnn 啊没注意到那个
【解决方案2】:

你可以试试这个。

var temp=$(".link").split(" ");
alert(temp[1]);                //it will give you 5 or 50 or 120 or 1000

如果您需要进一步的帮助,请告诉我。

【讨论】:

  • 一个 jQuery 集合没有 split 方法
  • 此外,PedroEstrada 已经给出了这个正确形式的答案(参见问题上的 cmets),并且或多或少在 nnnnnn 的答案中给出。
  • 我根本没有注意到评论部分。感谢您的反馈。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2012-11-23
  • 2014-02-05
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多