2

我需要操作一个看起来像这样的链接href:

/agents/view/model:会员/ag_start_dateMonth:08/ag_start_dateYear:2012/ag_end_dateMonth:08/ag_end_dateYear:2012

我需要抓住部分:ag_start_dateMonth并用08用户通过表单选择的值替换该值。

这意味着,我需要在字符串中找到此模式的位置,并在下一个ag_start_dateMonth之后和之前找到值,并将其替换为用户通过表单选择选项提供的新值。:/

我怎样才能做到这一点?请建议,我很不确定正则表达式语法:-/

4

3 回答 3

4

使用替换

var s = '/agents/view/model:Member/ag_start_dateMonth:08/ag_start_dateYear:2012/ag_end_dateMonth:08/ag_end_dateYear:2012';
var selected = 10;
s = s.replace(/(ag_start_dateMonth:)([0-9]+)/, '$1' + selected);

这个方便的小正则表达式维护两个匹配组:一个可能称为静态,另一个将包含您要替换的日期。

于 2012-08-27T12:52:10.487 回答
1

这应该可以帮助您:

var s = '/agents/view/model:Member/ag_start_dateMonth:08/ag_start_dateYear:2012/' +
        'ag_end_dateMonth:08/ag_end_dateYear:2012';
var newText = 'foo';

alert(s.replace(/(ag_start_dateMonth:)08(\/)/, '$1' + newText + '$2'));
于 2012-08-27T12:55:19.363 回答
0

如果此输入来自页面上的表单,您始终可以“重建”href 而不是搜索和替换。假设您有一个表单,您可以从页面上获取这些值,使用 jQuery 这将是微不足道的

jQuery('#id-of-form button').click( function () {
    var start_month = jQuery('#id-of-form select.start-month').val();
    var start_year = jQuery('#id-of-form select.start-year').val();
    var end_month = jQuery('#id-of-form select.end-month').val();
    var end_year = jQuery('#id-of-form select.end-year').val();
    jQuery(a#your-link-id).attr('href','/agents/view/model:Member/ag_start_dateMonth:' +
         start_month + '/ag_startdateYear:' + start_year + "/ag_end_dateMonth:" +
         end_month + '/ag_end_dateYear:' + end_year);
});
于 2012-08-27T13:02:59.493 回答