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.

18 lines
701 B

4 years ago
  1. 'use strict';
  2. var regexParser = require('regex-parser');
  3. var REGEXP = /(\/?)(.+)\1([a-z]*)/i;
  4. /**
  5. * Parse the give value as a regular expression or give a pass-none expression where it is invalid
  6. * @param {RegExp|string|*} value An existing expression, or its string representation, or degenerate value
  7. * @returns {RegExp} The given expression or one matching the RegExp string else a pass-none expression
  8. */
  9. function toRegExp(value) {
  10. return ((typeof value === 'object') && (typeof value.test === 'function') && value) ||
  11. ((typeof value === 'string') && REGEXP.test(value) && regexParser(value)) ||
  12. (/^true$|^$/.test(value) && /.*/) ||
  13. /matchnone^/;
  14. }
  15. module.exports = toRegExp;