Sha256: e6f7b656d16206a487af2be61d00bddc86cb79a240431354e3024b9d303652b6

Contents?: true

Size: 918 Bytes

Versions: 67

Compression:

Stored size: 918 Bytes

Contents

'use strict';

var has = require('has');
var regexExec = RegExp.prototype.exec;
var gOPD = Object.getOwnPropertyDescriptor;

var tryRegexExecCall = function tryRegexExec(value) {
	try {
		var lastIndex = value.lastIndex;
		value.lastIndex = 0;

		regexExec.call(value);
		return true;
	} catch (e) {
		return false;
	} finally {
		value.lastIndex = lastIndex;
	}
};
var toStr = Object.prototype.toString;
var regexClass = '[object RegExp]';
var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';

module.exports = function isRegex(value) {
	if (!value || typeof value !== 'object') {
		return false;
	}
	if (!hasToStringTag) {
		return toStr.call(value) === regexClass;
	}

	var descriptor = gOPD(value, 'lastIndex');
	var hasLastIndexDataProperty = descriptor && has(descriptor, 'value');
	if (!hasLastIndexDataProperty) {
		return false;
	}

	return tryRegexExecCall(value);
};

Version data entries

67 entries across 67 versions & 10 rubygems

Version Path
govuk_publishing_components-17.19.1 node_modules/is-regex/index.js
govuk_publishing_components-17.19.0 node_modules/is-regex/index.js
govuk_publishing_components-17.18.0 node_modules/is-regex/index.js
govuk_publishing_components-17.17.0 node_modules/is-regex/index.js
govuk_publishing_components-17.16.0 node_modules/is-regex/index.js
govuk_publishing_components-17.15.0 node_modules/is-regex/index.js
govuk_publishing_components-17.14.0 node_modules/is-regex/index.js
govuk_publishing_components-17.13.0 node_modules/is-regex/index.js
govuk_publishing_components-17.12.2 node_modules/is-regex/index.js
govuk_publishing_components-17.12.1 node_modules/is-regex/index.js
govuk_publishing_components-17.12.0 node_modules/is-regex/index.js
govuk_publishing_components-17.11.0 node_modules/is-regex/index.js
govuk_publishing_components-17.10.0 node_modules/is-regex/index.js
govuk_publishing_components-17.9.0 node_modules/is-regex/index.js
govuk_publishing_components-17.8.0 node_modules/is-regex/index.js
govuk_publishing_components-17.7.0 node_modules/is-regex/index.js
govuk_publishing_components-17.6.1 node_modules/is-regex/index.js
govuk_publishing_components-17.6.0 node_modules/is-regex/index.js
govuk_publishing_components-17.5.0 node_modules/is-regex/index.js
govuk_publishing_components-17.4.0 node_modules/is-regex/index.js