2017-09-06 5 views
0

Ich kann nicht herausfinden, ob eine Variable eine Regex ist. Aber ich muss auch herausfinden, ob es ein Objekt ist, also kann ich das typeof(regex) === 'object' nicht verwenden und darauf verlassen, da es möglicherweise seit der if-Anweisung ausgeführt wird, als wäre es eine Regex. Aber ich würde es gerne in Legacy-Browsern auch arbeiten. Jede Hilfe wird sehr geschätzt.Erkennen, ob Variable ein Muster ist

var regex= /^[a-z]+$/; 

//...Some code that could alter the regex variable to become an object variable. 



if (typeof(regex) === 'object') { 
    console.log(true); 
} 

Antwort

0

können Sie verwenden instanceOf

var regex= /^[a-z]+$/; 
 

 
//...Some code that could alter the regex variable to become an object variable. 
 

 

 

 
if (regex instanceof RegExp) { 
 
    console.log(true); 
 
}

0

es Möglichkeiten gibt, dies zu tun, sie sind:

var regex= /^[a-z]+$/; 
 

 
// constructor name, a string 
 
// Doesn't work in IE 
 
console.log(regex.constructor.name === "RegExp"); // true 
 
// instanceof, a boolean 
 
console.log(regex instanceof RegExp); // true 
 
// constructor, a constructor 
 
console.log(regex.constructor == RegExp); // true

+0

Die erste funktioniert nicht in IE. Testen Sie nicht auf Funktionsnamen. – Bergi

+0

@Bergi Deshalb habe ich die anderen Methoden erwähnt. –

+0

Aber warum alles erwähnen? Es erhöht nur die Chancen, dass jemand, der die Antwort liest, eine schlechte Praxis aufgreift (besonders, wie es zuerst erwähnt wird). – Bergi

Verwandte Themen