7

I know that I can pass a string as the second parameter to the JavaScript string object's replace method. In this case I can use $` and $' to reference the left/right part text of a successful match. Now my question is, If I pass a callback function as the second parameter, how can I get the same information? I want to use this infomation in the callback function. Great thanks.

1
  • 3
    ...whoa, you can use a callback? Neat! Commented Mar 1, 2010 at 2:52

2 Answers 2

10

See Mozilla's documentation; you won't get that data for free.

The good news is, you will get the offset of the match as your second-to-last argument, and the total string as the last. So you can run your own substring functions.

var str = 'abc';
str = str.replace('b', function (match, offset, full) {
    var before = full.substr(0, offset),
        after = full.substr(offset + 1, full.length - offset);
    return 'foo'; // or, ya know, something actually using before and after
});
Sign up to request clarification or add additional context in comments.

Comments

0
var str = 'abc';
str = str.replace('b', function (match) {
    // (!) List of actual arguments depends from template of RegEx >>>
    var offset = arguments.length - 1, full = arguments[offset];
    offset = arguments[offset - 1];
    // (!) But the first argument is match
    var before = full.substr(0, offset),
        after = full.substr(offset + 1, full.length - offset);
    return 'foo'; // or, ya know, something actually using before and after
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.