© 2016, Onur Yıldırım (@onury). MIT License.
RegExp
API for Humans!re(pattern).each(input, callback)
Install via NPM:
npm i re.js
Install via Bower:
bower install re.js
For all the features and details, please read the API reference.
const re = require('re.js');
.each()
var input = 'Peter Piper picked a peck of pickled peppers.';
re(/p\w+/i).each(input, function (matches) {
console.log(matches[0]);
});
Note that above example does not have a g
flag (for global) in the RegExp
. But logically; since you're calling each()
it should search for all. So re
automatically fixes it for you.
.eachRight()
Iterate from last match to first.
re(/p\w+/i).eachRight(input, function (matches, index) {
if (matches[0] === 'peck') {
console.log('exiting @', index); // —> exiting @ 3
// return early, no more iterations..
return false;
}
});
.map()
var mapped = re(/p\w+/i).map(input, function (matches) {
return matches[0];
});
console.log(mapped);
// —> ["Peter", "Piper", "picked", "peck", "pickled", "peppers"]
.all()
re(/p\w+/i).all(input);
// —> [Array, Array, Array, Array, Array, Array]
.match()
re(/p\w+/i).match(input);
// —> ["Peter", "Piper", "picked", "peck", "pickled", "peppers"]
.exec().next()
re(/p\w+/i)
.exec(input)
.next(function (matches, index) {
console.log(index + ':', matches[0]); // —> 0: "Peter"
})
.next(function (matches, index) {
console.log(index, ':', matches[0]); // —> 1: "Piper"
})
..
.test()
for convenience...
re(/p\w+/i).test(input); // —> true
re(/p\w+/i).first(input)[0]; // —> "Peter"
re(/p\w+/i).firstIndex(input); // —> 0
re(/p\w+/i).first(input).index; // —> 0
re(/none/).first(input); // —> null
re(/none/).firstIndex(input); // —> -1
re(/none/).first(input).index; // —> Error
re(/p\w+/i).last(input)[0]; // —> "peppers"
re(/p\w+/i).lastIndex(input); // —> 37
re(/p\w+/i).last(input).index; // —> 37
re(/p\w+/i).nth(input, 3)[0]; // —> "picked"
re(/p\w+/i).indices(input); // —> [ 0, 6, 12, 21, 29, 37 ]
v1.1.0
.eachRight()
callback parameter index
is now reversed. (last iteration index will be 0
.).eachInverse()
method for iterating over non-matched blocks. #experimentalcharIndex
(same as matches.index
).v1.0.0
MIT.