JavaScriptNapisy

String.prototype.search()

Zwraca indeks pierwszego dopasowania wyrażenia regularnego w napisie albo -1.

Zwraca
Indeks pierwszego dopasowania albo -1, gdy wzorzec nigdzie nie pasuje.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const code = 'Kod rabatowy: KURS2026'

console.log(code.search(/\d/))
console.log(code.search(/[A-Z]{4}/))
console.log(code.search(/python/i))
Konsola
18
14
-1

Definicja i zastosowanie

#

Metoda search() sprawdza napis wyrażeniem regularnym i zwraca pozycję, na której zaczyna się pierwsze dopasowanie. Gdy wzorzec nigdzie nie pasuje, wynikiem jest -1. Działa więc jak indexOf(), ale szuka wzorca, a nie stałego tekstu.

Dzięki temu znajdziesz pierwszą cyfrę w tekście, pierwszą wielką literę albo słowo zapisane dowolną wielkością liter (flaga i). Jeśli przekażesz zwykły napis, zostanie zamieniony na wyrażenie regularne, więc znaki takie jak . czy ? zachowają specjalne znaczenie.

Metoda zawsze szuka od początku napisu i ignoruje flagę g oraz właściwość lastIndex. Gdy potrzebujesz samego dopasowanego tekstu, użyj match(), a do odpowiedzi „pasuje czy nie” wystarczy regex.test(text).

Składnia

#
Składnia
string.search(regexp)

Parametry

#
  • regexp

    RegExp | string

    Wyrażenie regularne. Zwykły napis zostanie zamieniony na wyrażenie przez new RegExp().

Więcej przykładów

#
search() a indexOf()
JavaScript
const title = 'Lekcja 12: Pętle'

console.log(title.indexOf('12'))
console.log(title.search(/\d+/))
console.log(title.indexOf('.'))
console.log(title.search('.'))
Konsola
7
7
-1
0

W tytule nie ma kropki, a mimo to search(".") zwróciło 0. Napis zamienił się w wyrażenie regularne, w którym kropka oznacza dowolny znak.

Wycinanie kodu pocztowego
JavaScript
const address = 'ul. Kwiatowa 15, 00-950 Warszawa'
const start = address.search(/\d{2}-\d{3}/)

console.log(start)
console.log(address.slice(start, start + 6))
Konsola
17
00-950

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Przekazany napis staje się wyrażeniem regularnym, więc "1.5".search(".") zwróci 0, bo kropka pasuje do dowolnego znaku. Do szukania stałego tekstu używaj indexOf().
  • Wynik 0 oznacza dopasowanie na samym początku, a nie jego brak. Porównuj wynik z -1.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.