JavaScript'te bir dizenin belirli bir karakter içerip içermediğini nasıl anlarsınız?


Bir kullanıcıdan 24 karakterden oluşan (harf ve rakam, büyük/küçük harf duyarsız) bir kayıt kodu girmesi istenen bir metin kutusuna sahip bir sayfam var. Kullanıcının 24 karakterden fazla girmesini engellemek için maxlength kullandım.

Kayıt kodları genellikle tirelerle ayrılmış karakter grupları olarak verilir, ancak kullanıcıdan kodları tire olmadan girmesini istiyorum.

Kullanıcının girdiği bir dizenin tire içermediğini veya daha iyisi yalnızca alfanümerik karakterler içerdiğini kontrol etmek için jQuery kullanmadan JavaScript kodumu nasıl yazabilirim?

Cevap #1

your_string içinde "hello"'yu bulmak

if (your_string.indexOf('hello') > -1)
{
  alert("hello found inside your_string");
}

Alfanümerik için bir düzenli ifade kullanabilirsiniz:

http://www.regular-expressions.info/javascript.html

Alfa Sayısal Düzenli İfade

Cevap #2

ES6 MDN belgeleri ile .includes()

"FooBar".includes("oo"); // true

"FooBar".includes("foo"); // false

"FooBar".includes("oo", 2); // false

E: IE tarafından desteklenmiyor - bunun yerine .indexOf() ile birlikte Tilde operatörü ~ (Bit Düzeyinde DEĞİL) kullanabilirsiniz

~"FooBar".indexOf("oo"); // -2 -> true

~"FooBar".indexOf("foo"); // 0 -> false

~"FooBar".indexOf("oo", 2); // 0 -> false

Bir sayı ile kullanıldığında, Tilde operatörü etkili olarak ~N => -(N+1) yapar. Bunu çifte olumsuzluk !! (Mantıksal DEĞİL) ile kullanarak sayıları boolean değerlere dönüştürebilirsiniz:

!!~"FooBar".indexOf("oo"); // true

!!~"FooBar".indexOf("foo"); // false

!!~"FooBar".indexOf("oo", 2); // false

 

Cevap #3

Eğer metin foo değişkenindeyse:

if (! /^[a-zA-Z0-9]+$/.test(foo)) {
    // Validation failed
}

Bu, kullanıcının en az bir karakter girdiğini ve yalnızca alfasayısal karakterler girdiğini test edecek ve doğrulayacaktır.

Cevap #4

ES6, String'in prototype'ında yerleşik bir yöntem (includes) içerir ve bu yöntem bir stringin başka bir stringi içerip içermediğini kontrol etmek için kullanılabilir.

var str = 'To be, or not to be, that is the question.';

console.log(str.includes('To be')); 

Aşağıdaki polyfill, bu yöntemi desteklenmeyen tarayıcılara eklemek için kullanılabilir. (Kaynak)

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }
    
    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}

Cevap #5

Hepiniz çok fazla düşünüyorsunuz. Sadece basit bir Düzenli İfade kullanın, o sizin en iyi arkadaşınızdır.

var string1 = "Hi Stack Overflow. I like to eat pizza."
var string2 = "Damn, I fail."

var regex = /(pizza)/g // Insert whatever phrase or character you want to find

string1.test(regex); // => true
string2.test(regex); // => false

5 dakikada Regex öğren?

İlgili makaleler