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 t开发者_开发技巧he second parameter, how can I get the same information? I want to use this infomation in the callback function. Great thanks.
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
});
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
});
精彩评论