jQuery中的正则表达式:括号内的数字

时间:2012-11-09 11:54:19

标签: javascript jquery regex

是否可以使用RegEx从字符串中获取括号内的数字? 例如,我选择的内容如下:

<select class="selectoption">
    <option value="1">no numbers</option>
    <option value="2">3 (+110.0 грн.)</option>
    <option value="3">Blabla (+95.5 грн.)</option>
</select>

当用户选择带括号(110或95.5)的选项时,我只需要获取数字。

现在我有:

$('.selectoption').change(function() {
    if ( $("select option:selected").text().match(/\(.*\)/).length ){}
        alert (
            $("select option:selected").text().match(/\(.*\)/)
        );
    end
});

但它返回(+110.0 грн.) :(

3 个答案:

答案 0 :(得分:4)

尝试:

$('.selectoption').on('change', function () {
  var m = $(this).find(':selected').text().match(/\(.*?([\d.]+).*?\)/);
  console.log(
    m && m[1] || 'n/a'
  ); 
});

http://jsbin.com/ekanog/1/

答案 1 :(得分:2)

Match返回你在regexp中定义的char组数组。 您可以使用替换匹配

  $("select option:selected").text().replace(/^(.*)\([^\)\d]*(\d+\.\d+)[^\)\d]*\)$/, '$2')

答案 2 :(得分:1)

看起来应该是这样的:

$('form').on('change', '.selectoption', function() {
    var content = $('option:selected', this).text(),
        matches = content.match(/\([^\d]*(\d+(\.\d*)?)/);
    if (matches.length) {
        alert(matches[1]);
    }
});

form.selectoption个父母之一,如果选择不正确,请更改选择器。

如果您不需要可以使用的委托:

$('.selectoption').on('change', function() {

正如您在编辑时所做的那样。它的工作原理完全相同:)

<强> Example Code