A reguláris kifejezések 1
Munkájukat egy speciális objektum RegExp.
Ezen túlmenően, a vonalak saját módszereit kereső, mérkőzés, cserélje ki. de megérteni őket - elemezzük ugyanazt az első RegExp.
Egy objektum típusú RegExp. vagy, a rövid, egy reguláris kifejezés hozható létre kétféleképpen
minta - reguláris kifejezést keresni (a csere - később), és a zászlókat - egy sor olyan szimbólumok kombinációja g (globális keresés), i (kis- és nagybetű érzékeny) és m (többsoros).
Az első módszert gyakran használják, a második - néha. Például két ilyen hívásokat ekvivalens:
A második hívás - tk reguláris kifejezés idézőjelbe, szükséges megismételni a \
Ha keres, akkor a legtöbb jellemzője a modern PCRE-szintaxis.
A hétköznapi karakterek - teszi őket különlegessé. Például a kifejezés / s / keresi csak a karakter „s”. És ha tesz egy \ előtt s aztán a / \ s / már áll a szóköz simvol.I Ezzel szemben, ha egy speciális szimbólum, mint például a *, hogy \ teszi csak a szokásos szimbólum „csillag”. Például a / a * / keres 0 vagy több egymást követő karakter „a”. Ahhoz, hogy megtalálja egy csillag „a *” - hogy egy \ előtt különleges. szimbólum: / a \ * /.
Ez csak az első a bemeneti adatok. Ha több keresési jelző ( „m”). ez is működik, az elején egy új stroki.Naprimer, / ^ A / nem találja az „A” „egy A”, de nem talált az első „A” az „An A.”
Ez jelzi a bemenet végét. Ha a telepített multi-keresés zászlót is kiváltott végén stroki.Naprimer, / t $ / nem találja „t” „evő”, de úgy véli, - az „eszik”.
Azt jelzi, ismételje 0 vagy több alkalommal. Például a / bo * / lesz „boooo”, „A szellem booooed” és a „b”, „A madár csicseregte”, de nem találja az „A kecske morgott”.
Jelzi ismételt 1 vagy több alkalommal. Egyenértékű. Például a / a + / lelet „a” „édesség”, és az összes „a” „caaaaaaandy”.
(Decimális pont) minden karakter más, mint a vonal takarmány: \ n \ r \ u2028 vagy \ u2029. (A [\ s \ S] olyan keresési karakterláncokat beleértve a fordítást). Például /.n/ találni „egy” és „az” a „sőt, egy alma a fán”, de nem a „sőt”.
X megkeresi és tárolja. Ez az úgynevezett „tároló zárójelbe.” Például a / (foo) / megtalálja és memorizálni 'asztal' a "foo bar". A illeszkedô tároljuk a tömbben, keresési eredményt, vagy egy előre meghatározott RegExp objektum tulajdonságait $ 1. $ 9 .Emellett, a zárójelben az a közös, hogy azok, egyetlen eleme a mintát. Például, (ABC) * - abc ismétlése 0 vagy több.
Leletek x. de emlékszik talált. Ez az úgynevezett „tumait emberemlékezet zárójelbe.” A illeszkedô nem tárolja a tömbben eredmények és ingatlan RegExp.Kak és minden zárójelben található egyesíteni őket egyetlen podpattern.
Leletek x. Csak akkor, ha az x azt jelenti, y. Például a / Jack (? = Apró hering) / találni 'Jack', hacsak nem követi 'Szalaka'. / Jack (= Apró hering |? Frost) / találni 'Jack', ha csak lehet, majd 'Szalaka' vagy 'Frost'. Azonban sem „Szalaka”, sem „Frost” nem fog szerepelni a keresési eredmények között.
Leletek x. Csak akkor, ha az x ne y. Például /\d+(?!\.)/ megtalálják a szám csak akkor, ha nem követi a tizedesvessző követte. /\d+(?!\.)/.exec("3.141 „) megállapítja a 141, de nem 3,141.
Tartja az x vagy y. Például a / zöld | piros / megtalálják a „zöld” a „zöld alma” és „vörös” a „piros alma.”
Ahol n - pozitív egész szám. Tartja pontosan n ismétlései előző elem. Például a / a / megállapítja „a” „édességet”, de mind a „caandy”, és az első két a „caaandy.”
Ahol n - pozitív egész szám. N, és megállapítja, több ismétlést elemet. Például a / egy nem találja „a” „édesség”, de úgy véli, minden „a” „caandy” és a „caaaaaaandy.”
Ahol n és m - pozitív egész szám. Megtalálása a n m elem ismétlés.
karakterkészlet. Találja meg ezeket a karaktereket. Megadhatja a hosszát a kötőjel. Például, [ABCD] - ugyanaz, mint a [a-d]. Leletek „b” „szegy”, és „a” és „c” „fáj”.
Bármely karakter meghatározottaktól eltérő a készlet. Azt is megadhatja az intervallumot. Például, [^ abc] - ugyanaz, mint [^ a-c]. Keressen egy „r” a „szegy” és „h” a „szelet.”
Megkeresi egy karaktert backspace. (Nem tévesztendő össze a \ b.)
Megkeresi szavak határán (latin), mint például a teret. (Nem tévesztendő össze a [\ b)]. Például a / \ bn \ w / találni „nem” „délben”; / \ Wy \ b / lesz 'ly' az "esetleg tegnap."
Jelöli nincs szó limit. Például a / \ w \ Bn / megtalálni az 'on' a "dél", a / y \ B \ w / találni 'ti' a "valószínűleg tegnap."
Ha X - a levél Z-ig jelzi a vezérlő karakter egy húr. Például a / \ CM / jelöli a szimbólum Ctrl-M.
megállapítja, tetszőleges számú karakter (akkor ugyanaz a Unicode). Isplzuetsya [0-9], hogy megtalálja csak a szokásos számokat. Például a / \ d / és / vagy a [0-9] / talál egy '2' a "B2 a Suite szám."
Keressen egy nem numerikus karaktert (ábécé). [^ 0-9] - egyenértékű közönséges számokat. Például a / \ D / vagy / [^ 0-9] / fog 'B' "B2 a Suite szám."
Megfelelő speciális karakterek lapdobás, soremelési line feed.
Keresse az üres karakter, szóközökkel, fülek, sortörés és egyéb Unicode szóközöket. Például a / \ s \ w * / itt a 'bar' a "foo bar".
Találja meg a karaktert, kivéve szóköz. Például a / \ S \ w * / lesz 'asztal' a "foo bar".
Ha a zászló „g” szerepel egy reguláris kifejezés, akkor hívja a exec módszer sokszor találni egymást követő mérkőzést ugyanabban a sorban. Ha ezt megteszi, a keresés kezdődik részstringjét str. index lastIndex. Például, mint ezt a forgatókönyvet:
Ez a szkript megjeleníti a következő szöveg lép:
A következő példában a függvény megkeresi az input. Ezután egy ciklus segítségével a tömb, hogy ha vannak más nevek.
Feltételezzük, hogy minden regisztrált nevek a tömböt:
A következő módszerek működnek sorban reguláris kifejezéseket.
Minden módszer kivéve cserélni, indukálhatja mindkét típusú regexp objektumokkal az érveket, és a húrok, amelyeket ezután a gép RegExp tárgyak.
Annak érdekében, hogy felhívja egyenértékűek:
Ha idézőjelek megismételni \ és nincs mód arra, hogy zászlókat. Ha a reguláris kifejezés már be van állítva egy string, ez kényelmes és teljes formában
Ez adja vissza az index a reguláris kifejezés a húr, vagy -1.
Ha szeretné tudni, hogy a húr reguláris kifejezés módszert használja kereső (hasonlóan tesztelni Regexp módszerek). További információért használja a lassabb módszer mérkőzés (hasonló módszerrel RegExp exec).
Ez a példa egy üzenetet jelenít meg, attól függően, hogy a húr reguláris kifejezés.
Ha nincs g zászló a regexp. visszatér ugyanazt az eredményt, mint regexp.exec (string).
Ha regexp van a g zászlót. visszatér egy tömb összes mérkőzést.
Csak, hogy ha a húr reguláris kifejezés regexp. Használja regexp.test (string).
Ha azt szeretnénk, hogy az első eredményt - próbáljon r egexp.exec (string).
A következő példa a mérkőzés, hogy megtalálják a „Chapter”, majd egy vagy több számjegy, majd a számokat ponttal elválasztva. A reguláris kifejezés a zászló i. hogy a nyilvántartás nem veszi figyelembe.
A szkript kiírja tömb mérkőzések:
- Fejezet 3.4.5.1 - teljes mértékben megfelelő sort
- 3.4.5.1 - az első tartó
- .1 - belső konzol
Az alábbi példa bemutatja a zászlók és érzéketlen globális keresési találat. minden betű lesz megtalálható A-tól E és az e minden - egy külön elem a tömbben.
cserélje módszer helyettesítheti az esetekben a reguláris kifejezés nem csak a húr, de az eredmény a funkciót. A teljes szintaxis - a következő:
regexp objektumot RegExp. Ő bejegyzés helyébe egy olyan értéket, vissza fog térni a paraméter száma 2 substr A karakterlánc, amelyet a helyébe newSubStr. newSubStr karakterlánc részstringjét amely felváltja az 1. számú függvényargumentumot funkció, amely lehet hivatkozni, hogy létrehoz egy új karaktersorozat (helyettesítjük, ahelyett alsztringek eredő érv 1).
cserélje módszer nem változik a húr, ami miatt, hanem egyszerűen visszaadja egy új, módosított szöveg.
Hogy végre egy globális csere, viszont a „g” a reguláris kifejezés zászlót.
Ha az első érv - a húr, akkor nem alakul egy olyan reguláris kifejezés, úgy, hogy például a
Calling cserélje húr változatlan marad, mert nem keresett egy reguláris kifejezés \ s. és "\ s" sort.
Összhangban helyettesítések lehetnek olyan speciális karaktereket:
Ahol n vagy nn - decimális számjegy, beilleszti a substring előfordulások, n-edik megjegyzett beágyazott zárójelben, ha az első argumentum - az objektum RegExp.
Ha megad egy második paraméter a funkciót, akkor kerül végrehajtásra minden mérkőzésen.
A funkció segítségével dinamikusan létrehoz és visszaút cserét húr.
Az első paraméter a függvény - az egyező karakterláncot. Ha az első argumentum helyére egy RegExp objektumot. n az alábbi paraméterek tartalmazzák az egybeesése beágyazott kapcsok. Az utolsó két paraméter - a helyzet a vonal, ami egy véletlen, és a húr is.
Például a következő hívás visszatér helyére XXzzzz - XX. zzzz.
Mint látható, két zárójelben a reguláris kifejezés, ezért a két paraméter p1 funkciót. p2.
Ha lenne három zárójelben a függvény kellene adnia a paramétert p3.
A következő függvény váltja borderTop írja a szavakat a border-top:
A szabvány szerint, ez a funkció engedélyezve ES3, de tilos ES5.
Tekintettel arra, hogy a globális keresés lastIndex változik, de maga az objektum statikus regexp, az első keresést növeli lastIndex. és a következő - továbbra is nézd meg a régi lastIndex. azaz nem térhet vissza az összes találatot.
Ha keres minden mérkőzésen a ciklusban nem jelent problémát, mert A legújabb változata (sikertelen) visszaállítja lastIndex.
Egy általános megértését reguláris kifejezések, akkor olvassa el a szócikket.
Tényleg - Nagyon kiábrándító, hogy nincsenek nem nedvszívó fordított keresési
ez alapvető véleményem a koncepció.
Például, azt nem kívánja, hogy az eredmény megállapítása, hogy szükséges volt, hogy ellenőrizze a megy fel a helyét, és ez nagyon hasznos, ha a lecserélt cserélni.
Általánosságban szeretném cserélni nem csak találni egy sor $ 0, de minden zsebben elszigetelten $ 0 $ n, azaz a ha kicseréli-paraméter a módszer helyettesíti, helyettesítették, minden zseb sor.
Itt nézd meg kalauz
karakterkészlet. Találja meg ezeket a karaktereket. Megadhatja a hosszát a kötőjel. Például, [ABCD] - ugyanaz, mint a [a-d]. Keresse „b” „szegy”, és a „c” „fáj”.
Van egy sor természetes számok elválasztva „”
Meg kell alakítani egy tömbben.
Példa (működik), ha tudjuk, hogy a méret a tömb
var a = /(\d+)[\,](\d+)[\,](\d+)[\,](\d+)/.exec("10,150,0,1230 „);
riasztás ( "a [0] =" + a [0] '\ n' + +
"A [1] =" + a [1] + '\ n' +
"A [2] =" + a [2] + '\ n' +
"A [3] =" + a [3] + '\ n' +
"A [4] =" + a [4]
);
Ha nem tudjuk, hogy a méret a tömb (a sorok számát a természetes vonal)
Példa (típus) A (zárt)
var a = /(\d+)[[\,](\d+)]*/.exec("10,150,0,1230,11,1234 „);
(Csak reguláris kifejezés) Lehet tenni anélkül, hogy további ciklusban?
Segítség a megfelelő kifejezést.
azaz 6 szimbólumpárok restrikciós: a számjegyek 0-tól 9, vagy lat. betűk A-tól F, kettősponttal elválasztva.
1) hogy tévedtem a kódot?
2), hogy a minta helyesen történik -
és akkor ott van ez a lehetőség - nem tudom, mennyire más a helyzet, és megfelelnek
/ ^ \ S * ([\ d [A-F] :) [\ d [A-F] \ s * $ /
Srácok, segítségre van szüksége.
A beviteli mező vonal betétet tartalmaz, amelynek egy átviteli vonalba, például az azonos részén kódfüzér másolat „var myArray = myRe.exec (” cdbBdbsbz „);
„. És viszont bemenet 2 sor, és így nem lesz szükség a sorban.
Írok az alábbi reguláris kifejezés:
$ ( 'Input.search_fild) változás (function () var írja = $ (this) .val () .;
var newString = enter.replace (/ \ r \ n /, / \ s /);
riasztás (newString);
>);
azaz változó string egy rés. És ez nem működik, akkor a beviteli sorban 2.
Ha ellenőrizni tenni:
$ ( 'Input.search_fild) változás (function () var írja = $ (this) .val () .;
var newString = enter.replace (/ abc / "1");
riasztás (newString);
>);
Írt input „abc” - munka megváltozott „1”.
P.s. Módjának megváltoztatása dolgoznak ki elvesztése után INPUT fókusz, és hogyan kell repülni?
Van egy nagyszerű dolog, hogy működjön együtt az alapszakaszban - RegexBuddy. A kéz, sajnálom, nincs utalás, sem a legtöbb darab. De akik nem lusta, azt javasoljuk, hogy közelről. Ez tartalmazza kiemelve a szokásos eszközeinek tesztelésére, például a több nyelv + könyvtára a leggyakrabban használt regex
Van egy sor, ha valóban egyszerű, úgy néz ki, hogy „aba”
Nebhodimo találni ebben a sorban minden: „ab” és a „ba”.
mert index, ahol kezdeni a következő keresési növekszik ebben a példában lesz megtalálható akár az „AB” vagy „ba”, de ebben a példában, a keresési eredményt szeretne kapni a két érték, azaz az „AB” és a „ba”, és nem egy közülük. Van-e elegáns megoldás egy reguláris kifejezés az ilyen típusú keresés nélkül ciklust, valamint egyéb kiegészítőket?
Természetesen például egyszerűsödik a szégyen, a valóságban, a sort, amelyben keresni szeretne minden lehetséges opciókat és sokkal kívánt értékeket sokkal nehezebb. Vagy talán akkor valahogy lastIndex'om (index, amelynél meg kell kezdeni a következő keresése)?
Ui Nem keresi a megoldást a kérdést, mert Azt is felhalmozódnak segítsége nélkül mások =) I am looking for elegánsabb (rövid és egyszerű) megoldás kidolgozása, amely ismeretlen számomra (hacsak azt nem értem a cikket, akkor elnézést kérek előre).
Jó napot!
Kérem, mondja meg, hogyan kell írni a rendszeres Laid találni specifikus események a húr belsejében a jelet.
Itt egy példa a jelölést:
ABCDEFG nbsp Forgatókönyv:
És itt van, hogyan néz ki a felhasználó számára:
forgatókönyv:
ABCDEFG Forgatókönyv:
Kapok egy string jelöléssel és formázni kell egy bizonyos módon line „forgatókönyv”, ha ez a sor elejére, ha az első sorban megelőzi bármely más karakter, a karakterlánc nem található. Ebben az esetben, az összes korábbi hiányosságok jelei fenn kell tartani.
Az első esetben, meg kell találnom a vonal „forgatókönyv”, mint vizuálisan ez a sor elejére, amely előtt megelőzte számos helyiségből. A második esetben a string „forgatókönyv:” nem található, mert „ABCDEFG” előzi meg a szimbólumok előtt ebben a sorban.
Azt nagyon hálás lenne, ha segít nekem megoldani ezt a puzzle
Jó napot!
Kérem, mondja meg, hogyan kell írni a rendszeres Laid találni specifikus események a húr belsejében a jelet.
Itt egy példa a jelölést:
forgatókönyv:
ABCDEFG nbsp Forgatókönyv:
És itt van, hogyan néz ki a felhasználó számára:
Kapok egy string jelöléssel és formázni kell egy bizonyos módon line „forgatókönyv”, ha ez a sor elejére, ha az első sorban megelőzi bármely más karakter, a karakterlánc nem található. Ebben az esetben, az összes korábbi hiányosságok jelei fenn kell tartani.
Az első esetben, meg kell találnom a vonal „forgatókönyv”, mint vizuálisan ez a sor elejére, amely előtt megelőzte számos helyiségből. A második esetben a string „forgatókönyv:” nem található, mert „ABCDEFG” előzi meg a szimbólumok előtt ebben a sorban.
Azt nagyon hálás lenne, ha segít nekem megoldani ezt a puzzle