替换子字符串和可选的后续字符

时间:2014-09-13 09:07:10

标签: javascript jquery regex replace

如果它是-,如何替换某个子字符串后面的字符?我正在使用正则表达式匹配并替换子字符串本身,但如果它是连字符,我还希望紧跟其后的字符。

例如:

$('.classg').on("click", function() {
    idq = $(this).attr('name');

    var _href = $('.classh').children("a").attr("href");

    $('.classh').children("a").attr("href", _href.replace(idq, ''));

    // ...
});

HTML:

<p class="classg"><a href="posting.php?topic_id=123456789">Answer</a></p>

<li class="classh" name="16992964">Multiquote</li>

在替换idq之后,我希望能够在字符串idq之后确定_href字符串上的下一个字符。如果字符是-,那么我想用''(空字符串)替换它。如果它是别的东西,我希望它被忽略。

1 个答案:

答案 0 :(得分:1)

使用?正则表达式运算符,该运算符可选地匹配前面的元素。如果它在那里,它将被替换。如果没有,则仅替换原始ID。

由于模式的其余部分位于变量中,因此可以像下面这样构造RegExp对象:var re = new RegExp(idq + "\\-?");

这匹配第一次出现的idq,后面跟一个连字符(-)。

$('.classg').on("click", function() {
    var idq = $(this).attr('id'); // ID will be a number example : 998352

    var _href = $('.classh').children("a").attr("href");

    var re = new RegExp(idq + "\\-?");

    $('.classh').children("a").attr("href", _href.replace(re, ''));
});