regex.test V.S. merkkijono.match tietää, vastaako merkkijono säännöllistä lauseketta

Regex Test V S String



Ratkaisu:

Peruskäyttö

Katsotaan ensin, mitä kukin toiminto tekee:

regexObject . testata ( Jousisoitin )



Suorittaa haun säännöllisen lausekkeen ja määritetyn merkkijonon välillä. Palauttaa totta tai väärä .



merkkijono . ottelu ( RegExp )



Käytetään noutamaan osumia, kun merkkijono vastaa säännöllistä lauseketta. Palauttaa taulukon, jossa on vastaavuuksia taityhjä, jos niitä ei ole.

Siitä asti kunnull arvioiväärä,

if (string.match (regex)) {// Osuma oli. } muu {// Ei osumaa. }

Esitys

Onko suorituskyvyssä eroa?



Joo . Löysin tämän lyhyen huomautuksen MDN -sivustolta:

Jos haluat tietää, vastaako merkkijono säännöllistä lauseketta regexp, käytä regexp.test (merkkijono).

Onko ero merkittävä?

Vastaus on jälleen kerran JOO ! Tämä kokoamani jsPerf osoittaa eron ~ 30% - ~ 60% selaimesta riippuen:

testi vs ottelu | Suorituskykytesti

Johtopäätös

Käyttää.test, jos haluat nopeamman boolean tarkistuksen. Käyttää.match hakea kaikki osumat, kun käytätg maailmanlaajuinen lippu.


Muista ottaa huomioon globaali lippu säännöllisessä lauseessasi:

var reg = /abc /g; !! 'abcdefghi'.match (reg); // => totta !! 'abcdefghi'.match (reg); // => true reg.test ('abcdefghi'); // => true reg.test ('abcdefghi'); // => epätosi<=  

Tämä johtuu siitä, että Regexp seuraa lastIndexiä, kun uusi osuma löytyy.