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
Przykład
#const code = 'Kod rabatowy: KURS2026'
console.log(code.search(/\d/))
console.log(code.search(/[A-Z]{4}/))
console.log(code.search(/python/i))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
#string.search(regexp)Parametry
#regexp
RegExp | string
Wyrażenie regularne. Zwykły napis zostanie zamieniony na wyrażenie przeznew RegExp().
Więcej przykładów
#const title = 'Lekcja 12: Pętle'
console.log(title.indexOf('12'))
console.log(title.search(/\d+/))
console.log(title.indexOf('.'))
console.log(title.search('.'))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.
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))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óci0, bo kropka pasuje do dowolnego znaku. Do szukania stałego tekstu używajindexOf(). - Wynik
0oznacza dopasowanie na samym początku, a nie jego brak. Porównuj wynik z-1.
Powiązane hasła
#- String.prototype.indexOf()Zwraca indeks pierwszego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.
- String.prototype.match()Dopasowuje napis do wyrażenia regularnego. Zwraca tablicę z dopasowaniem lub wszystkimi dopasowaniami albo null.
- RegExpWyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.
- String.prototype.matchAll()Zwraca iterator wszystkich dopasowań wyrażenia regularnego, każde razem z grupami i pozycją w tekście.
Widzisz błąd albo brakuje przykładu? Napisz do nas.