1

是否可以使用 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 грн.):(

4

3 回答 3

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/

于 2012-11-09T12:09:32.887 回答
2

匹配返回您在正则表达式中定义的字符组数组。您可以使用替换而不是匹配

  $("select option:selected").text().replace(/^(.*)\([^\)\d]*(\d+\.\d+)[^\)\d]*\)$/, '$2')
于 2012-11-09T12:04:08.447 回答
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() {

正如您在编辑中所做的那样。它的工作原理都是一样的:)

示例代码

于 2012-11-09T12:06:14.543 回答