Girilen değerin RegExp olup olmadığını anlamak.
Bir function'a gönderilen bir değerin string mi regexp'mi olduğunu nasıl ayırt ettirebilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (8)
instanceof
genel kullanımı bir türü kontrol etmek için kullanılır genellikle eğer şöyle bir yapı varsa
let a = new RegExp(/[a-z]/);
if(a instanceof RegExp){
console.log("Regexp")
}
bu şekilde kullanbilirsin instanceof
'u umarım bilgiler yararlı olmuştur.
Test methodunu biliyorum zaten, fakat yapmak istediğim şey;
Fonksiyona string gönderildiyse bir işlem, regex gönderildiyse farklı bir işlem yaptırmak.
bu işlemi RegExp'in test methodu ile çözebilirsiniz.
Örnek(Javascript) :
const str = 'table football';
const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');
console.log(regex.test(str));
// expected output: true
bu işlem sonucunda size true veya false dönecek.
method hakkında daha fazla detay isterseniz : Mozilla Dev
Hocam doğru söylüyorsunuz, fakat ben, hani belki insanceof
gibi şeyler kullanılarak yapılamaz mı diye düşünmüştüm.
Şöyle bir handikap var RegExp dediğiniz şey zaten aslında bir string parçalama yöntemi yani belirli parçalardan oluşuyor, aynı zamanda
bir string veri türü olduğu için ayırt etme konusunda daha iyi bir yol izleneceğini düşünmüyorum. Yani RegExp yazarken belirli standart
lara uymak gerektiğinden ötürü en kısa yöntem bu olmasada en mantıklı çözüm olduğuna inanıyorum.
Evet, söylediğiniz mantıklı fakat bunun en doğru yol olduğunu düşünmüyorum.
Öncelikle bir pattern belirmelelisin kendi açından yada kullanılan patternları göz önünde bulundurarak bir şema oluşturabilirsin.
Örn(Javascript);
let a = "/^[a-zAz]/";
let patterns = ["@", "/", "^"];
if(patterns.includes(a)){
console.log("Bu bir RegExp'dir");
}else {
console.log("RegExp değildir");
}