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

Kapcsolódó cikkek