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
disco_app-0.18.0 test/dummy/node_modules/is-regex/index.js
disco_app-0.18.2 test/dummy/node_modules/is-regex/index.js
disco_app-0.16.1 test/dummy/node_modules/is-regex/index.js
disco_app-0.15.2 test/dummy/node_modules/is-regex/index.js
disco_app-0.18.4 test/dummy/node_modules/is-regex/index.js
disco_app-0.18.1 test/dummy/node_modules/is-regex/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/is-regex/index.js
disco_app-0.14.0 test/dummy/node_modules/is-regex/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/is-regex/index.js
learn_create-0.0.22 lib/templates/javascript_lab_template/node_modules/is-regex/index.js
jester-data-8.0.0 node_modules/is-regex/index.js
ezii-os-5.2.1 node_modules/is-regex/index.js
ezii-os-2.0.1 node_modules/is-regex/index.js
ezii-os-1.1.0 node_modules/is-regex/index.js
ezii-os-1.0.0 node_modules/is-regex/index.js
ezii-os-0.0.0.1.0 node_modules/is-regex/index.js
ezii-os-0.0.0.0.1 node_modules/is-regex/index.js
govuk_publishing_components-18.0.0 node_modules/is-regex/index.js
govuk_publishing_components-17.21.0 node_modules/is-regex/index.js
govuk_publishing_components-17.20.0 node_modules/is-regex/index.js