You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
var utils = require('../utils') |
|
, nodes = require('../nodes'); |
|
|
|
var VALID_FLAGS = 'igm'; |
|
|
|
/** |
|
* retrieves the matches when matching a `val`(string) |
|
* against a `pattern`(regular expression). |
|
* |
|
* Examples: |
|
* $regex = '^(height|width)?([<>=]{1,})(.*)' |
|
* |
|
* match($regex,'height>=sm') |
|
* // => ('height>=sm' 'height' '>=' 'sm') |
|
* // => also truthy |
|
* |
|
* match($regex, 'lorem ipsum') |
|
* // => null |
|
* |
|
* @param {String} pattern |
|
* @param {String|Ident} val |
|
* @param {String|Ident} [flags=''] |
|
* @return {String|Null} |
|
* @api public |
|
*/ |
|
|
|
function match(pattern, val, flags){ |
|
utils.assertType(pattern, 'string', 'pattern'); |
|
utils.assertString(val, 'val'); |
|
var re = new RegExp(pattern.val, validateFlags(flags) ? flags.string : ''); |
|
return val.string.match(re); |
|
} |
|
match.params = ['pattern', 'val', 'flags']; |
|
module.exports = match; |
|
|
|
function validateFlags(flags) { |
|
flags = flags && flags.string; |
|
|
|
if (flags) { |
|
return flags.split('').every(function(flag) { |
|
return ~VALID_FLAGS.indexOf(flag); |
|
}); |
|
} |
|
return false; |
|
}
|
|
|