reglist
v0.1.1
Published
Compile a list of regular expressions to a single regexp.
Downloads
1
Readme
Reglist, a Regular Expression List Compiler.
Take a list of regexes and make a single regex. Gives you which regex matched and its matching groups.
var Reglist = require('reglist')
var reglist = new Reglist()
reglist.add([
/[^\-]*-([^\-])/,
/data:([a-z\/]+)(?:;base64|;binary),.+/,
])
var matched = reglist.match("data:text/plain;base64,aDfwkTPmx98==")
// { index: 1,
// match: [ 'data:text/plain;base64,aDfwkTPmx98==', 'text/plain' ] }
Speed
Using a reglist instead of a list of regular expressions was studied as the means by which the server framework matches the requests' URL to callbacks. On http://shields.io, the following measurement was made by loading the front page, in nanoseconds:
# time-no-reglist
avg: 42361.79518072289
median: 35912
# time-reglist
avg: 43857.22891566265
median: 32390
Reglist's match is about as fast as looping over a list of regexes. Reglist's test is a bit slower.
Interface
add: function(regexes: Array<RegExp>)
appends a regex to the list.push: function(regex: RegExp)
appends just one regex.match: function(string: String)
checks whether the string matches one of the regexes in the list, and returns:index: Number
the index of the regex in the list,match: Array<String>
a list corresponding to the matching groups of the regex that matched.
test: function(string: String): Boolean
checks whether the string matches one of the regexes in the list.regexes: Array<RegExp>
is the list of regexes. Do not change it.