Primjer podudaranja JavaScript Regex-a - Kako koristiti JS Replace na nizu

Programeri već dugo koriste uređivače teksta. Kao i većina alata, i svi uređivači teksta imaju jednu zajedničku značajku: pronalazak i zamjena.

Ako već neko vrijeme koristite traženje i zamjenu, možda znate koliko je korisna ova značajka. Ali većina nas ne zna da je ovaj alat još snažniji nego što mislimo.

Ne može zamijeniti samo obične nizove, već i uzorke. Ti su obrasci poznati kao Regularni izrazi .

Regularni izrazi postoje u JavaScript-u i većini drugih programskih jezika. Regex (ukratko) vrlo su moćan alat koji će vam pomoći da pronađete jednostavne, ali i složene obrasce pretraživanja.

Algoritmi pretraživanja nizova također su značajna grana računalne znanosti. U ovom ćemo članku naučiti kako koristiti ovaj nevjerojatan alat u JavaScript-u.

Zašto regularni izrazi?

Stvarnu važnost Regularnih izraza nećete shvatiti dok vam ne daju dugački dokument i ne zatraže da iz njega izvučete sve e-poruke.

To biste mogli učiniti ručno, ali postoji super brza metoda koja to može učiniti za vas. Većina modernih uređivača teksta dopušta Regex u svojoj opciji Pronađi. Obično se označava sa .*.

I to nije sve što može regularni izraz - e-adrese su samo primjer. Možete pretraživati ​​bilo koju vrstu niza koji slijedi obrazac, na primjer URL-ove ili tekst između zagrada.

Regex se također može koristiti za provjeru valjanosti određenih vrsta uzoraka, poput provjere valjanosti e-pošte. Možete zamijeniti neku dugu logiku provjere valjanosti poput ove:

function IsValidEmail(email) { if (email.length <= 2) { return false; } if (email.indexOf("@") == -1) { return false; } var parts = email.split("@"); var dot = parts[1].indexOf("."); var len = parts[1].length; var dotSplits = parts[1].split("."); var dotCount = dotSplits.length - 1; if (dot == -1 || dot  2) { return false; } for (var i = 0; i < dotSplits.length; i++) { if (dotSplits[i].length == 0) { return false; } } return true; };

S jednim retkom poput ovog:

function isValidEmail(email) { return /^(([^()\[\]\\.,;:\[email protected]"]+(\.[^()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email); }

Iako taj regularni izraz izgleda zastrašujuće, to nije nešto čega se morate sjetiti. Jednom kad shvatite kako to funkcionira, bit će vrlo jednostavno za implementaciju.

JavaScript podudaranje regularnog izraza

U JavaScript-u imamo metodu podudaranja za nizove. Ova se metoda može koristiti za podudaranje regularnog izraza u nizu.

Ova je metoda ista kao i metoda pronalaženja u uređivačima teksta. Pretražuje zadani niz pomoću regularnog izraza i vraća niz svih podudaranja. Prototip metode podudaranja je sljedeći:

str.match(regexp)

To će vratiti niz svih podudaranja u pretraživanju niza ( str) za regularni izraz ( regexp).

Osnovna uporaba ove metode bila bi brojanje svih riječi u nizu. Na primjer:

var str = "This is a test string"; var matchArr = str.match(/\w+/g); console.log(matchArr.length); //prints 5

O ovom ćemo \w+regularnom izrazu saznati kasnije u ovom članku.

Korištenjem takvih regularnih izraza možemo izvoditi razne zadatke koji bi inače zahtijevali da napišemo zamornu logiku. Primjer je bila funkcija provjere valjanosti e-pošte. Moramo testirati sve kriterije, ali pomoću regularnog izraza možete ga pojednostaviti.

Regularni izrazi vrijede u većini string funkcija, ali trebali biste provjeriti prototip funkcije ako želite biti sigurni. Jedna od takvih metoda je metoda Zamijeni. Doznajmo više o tome u nastavku.

JavaScript metoda zamjene

JavaScript ima brojne funkcije uslužnih programa stringa. Zamijeni je jedan od njih. Prototip metode zamjene je sljedeći:

const newStr = str.replace(regexp|substr, newSubstr|function)

Kao što vidite, metoda replace djeluje na niz i vraća niz. Potrebna su dva parametra: niz koji će se zamijeniti i čime će se zamijeniti.

Prvi parametar može biti niz ili regularni izraz. Ovdje možemo koristiti snagu regularnih izraza da zamijenimo složeni obrazac pretraživanja nekim nizom.

Drugi parametar također može biti funkcija. Da to pokažemo, pogledajmo primjer:

var str = "This is a test string"; var newStr = str.replace(/\w+/g, function(match) { return match.split("").reverse().join(""); }); console.log(newStr); //prints "sihT si a tset gnirts"

Ovaj primjer preokreće svaku riječ u nizu. Kao što vidite, zamjena u kombinaciji s regularnim izrazom vrlo je moćan alat u JavaScript-u.

Metoda zamjene može biti korisna ako želite zamijeniti određeni obrazac pretraživanja nekim drugim nizom nakon neke obrade izvornog niza.

Također se može koristiti za ispravljanje nevažećeg podudaranja - na primjer za provjeru valjanosti e-pošte i, ako je moguće, za ispravljanje nevaljane adrese e-pošte.

Sad kad znamo koliko je Regex koristan, naučimo neke osnovne Regularne izraze i potražimo nizove.

Osnovni regularni izrazi

Iako su regularni izrazi velika tema, osnovni su vrlo jednostavni za razumijevanje i pamćenje. Pokušajmo razumjeti neke osnovne pojmove povezane s Regularnim izrazima.

Književnost

Doslovno je bilo koji znak koji se ocjenjuje kao sebe, a ne u bilo kojem općem obliku. Dakle, wordvrijedi i regularni izraz koji će odgovarati samo "riječi" .

Ako želite zamijeniti sve instance dane riječi u JavaScriptu, možete to učiniti:

var str = "JavaScript is a very popular programming language. javascript is used in web developement. javascript is very easy to learn."; var newStr = str.replace(/javascript/gi,"js"); console.log(newStr); /* prints "js is a very popular programming language. js is used in web developement. js is very easy to learn." */

Ovo zamjenjuje sva pojavljivanja JavaScript-a s JS-om. To smo postigli pomoću gidentifikatora koji označava globalno pretraživanje. Odnosno, pretražuje sve pojave, a ne samo prvu.

Tu je i iidentifikator. To je skraćenica za pretraživanje bez velikih i malih slova. Podudara se sa nizom koji zanemaruje slučaj.

Thus a literal can be used to match a specific character or group of characters.

Meta-characters

A meta-character is used for generic search, such as to search any digit, any character, or any alpha-numeric character. These are some common meta-characters:

  • \d matches any digit, that is, digits from 0 to 9
  • \w matches any alpha-numeric character, That is, alphabets a-z, A-Z and digits 0-9.
  • \s matches any whitespace

Similarly, \D , \W and \S match any non-digit, non-alphanumeric, and non-whitespace characters, respectively. For example, \d\d\d would match any three digits in a row.

Quantifiers

A quantifier is used to quantify any literal or meta-character. It can be used to select multiple occurrences of a given character. There are four types of quantifiers defined in regex:

  • * is used to match 0 or more occurrences of a given character.
  • + is used to match 1 or more occurrences of a given character.
  • . is used to match either no occurrence or 1 occurrence of a given character.
  • {min,max} or {n} can be used to match a number of occurrences in a range or a given number of times n

An example would be the one we used above to reverse every word in a string.

  • \w+ matches every word in a string
  • \w matches any alpha-numeric character
  • \w+ matches one or more occurrences of an alpha-numeric character, that is, every word in a string.

We could also use quantifiers to replace multiple whitespaces with a single whitespace. For example:

var str = "This is a string with multiple whitespaces"; var newStr = str.replace(/\s\s+/g, " "); console.log(newStr); //prints "This is a string with multiple whitespaces"

There are plenty of other uses for quantifiers.

Position meta-characters

There are also position meta-characters which represent a position. For example ^ represents the start of a line, $ represents end of a line, and \b represents word boundaries.

Conclusion

In this article, we learned how important regular expressions are. We also saw how they can be used for searching simple as well as complex search patterns.

This has great potential in programming with text. String-matching algorithms are used in DNA matching and form a significant branch of computer science.

Once you master regex you can use it with JavaScript's match and replace methods to simplify long programs and use it for validation of certain patterns. Regex can also help shorten long programs and make them more understandable.

Now you can use your own creativity and make wonderful regex – so good luck with your new skill.

This was a very basic overview of regular expressions. If you want to master the art of regex, I suggest you to check out Daniel Shiffman's tutorial here.

Hey, I hope you loved this article and learned something. You can find me at my internet home, theabbie.github.io  or my Github. Do checkout my other articles. Thank you.