Мазмұнға өту

Регулярлық өрнектерді тестілеу

JavaScript регулярлық өрнегін мәтініңізде тексеріп, сәйкестіктерді бірден түспен белгілеп, топтар мен қарапайым тілмен жазылған түсіндірмені браузеріңізде көріңіз.

JavaScript (ECMAScript) regex түріБраузеріңіздегідей, Node.js пен Deno-дағыдай қозғалтқыш
//g

$1 немесе $<name> тобты, $& толық сәйкестікті, $` және $' сәйкестіктен бұрынғы және кейінгі мәтінді, $$ доллар белгісін енгізеді.

Сәйкестіктер мен түсіру топтары осында көрсетіледі.

Браузеріңізде жұмыс істейді · серверге жүктелмейдіҚалай жұмыс істейді

Regex тестілеуші құралын қалай қолдану керек

  1. 1

    Өрнекті енгізіңіз

    Тұрақты өрнекті көлбеу сызықтарсыз теріңіз; жалаушалар оның астындағы ауыстырғыштарда таңдалады.

  2. 2

    Тексерілетін мәтінді қосыңыз

    Іздейтін мәтінді қойыңыз; сәйкестіктер теру барысында бөлектеліп, топтарымен бірге тізімделеді.

  3. 3

    Түсіндірмені қараңыз

    Түсіндірме бөлімін ашып, әр белгіні қарапайым тілмен оқыңыз және өрнек шын мәнінде не істейтінін біліңіз.

  4. 4

    Алмастыруды алдын ала қараңыз

    $1 немесе $<name> қолданып алмастыру мәтінін теріп, нәтижені көріңіз, содан кейін кодты Код қойындысынан көшіріңіз.

Шектеулер және Pro

Тіркелусіз тегін: 100 000 сәйкестікке дейін саналады, 2 000 сәйкестік бөлектеледі, кестеде 200 сәйкестік көрсетіледі; бөлектеу 200 000 таңбаға дейінгі мәтінге жұмыс істейді, әр іске қосу 1,5 секундтан кейін тоқтатылады.

Pro жарнаманы өшіреді; тестер кез келген тарифте бірдей жұмыс істейді. Pro-ны қарау

Regex тестілеуші туралы

Бұл тестер сіздің өрнегіңізді браузерге кіріктірілген JavaScript (ECMAScript) тұрақты өрнек қозғалтқышымен орындайды. Дәл осы қозғалтқышты Node.js, Deno, Bun және барлық веб-беттер қолданады, сондықтан мұнда сәйкес келген нәрсе кодыңызда да сәйкес келеді. Өрнек пен тексерілетін мәтінді енгізіңіз — әр сәйкестік теру барысында бірден бөлектеледі, сонымен қатар орындар кестесі, нөмірленген және аталған топтар көрсетіледі, ал d жалаушасы қосулы болса, әр топтың басы мен соңы да шығады.

Сегіз жалаушаның барлығын қосуға болады: g — барлық сәйкестік үшін, i — регистрді ескермеу үшін, m — ^ және $ әр жолға жұмыс істеуі үшін, s — нүкте жол үзілімдерін де қамтуы үшін, u — толық Unicode және \p{…} қасиеттері үшін, v — жақшаның ішінде қиылысу және алу амалдары бар Unicode жиындары үшін, y — жабысқақ сәйкестік үшін, d — индекстер үшін. Алмастыру өрісі String.prototype.replace нәтижесін $1, $<name>, $& және басқа алмастыру белгілерімен алдын ала көрсетеді, ал Код қойындысы дайын literal, matchAll және RegExp() үзінділерін береді.

Түсіндірме қойындысы өрнекті белгілерге бөліп, әрқайсысының не істейтінін қарапайым тілмен айтады: топтар, lookaround, таңбалар класы, квантификаторлар және олардың ашкөз немесе ұялшақ екені. Анықтама кестесі жиі қолданылатын белгілерді меңзер тұрған жерге қояды.

Сәйкестік іздеу фондық Web Worker ішінде 1,5 секундтық шектеумен орындалады. Қатты кері қайтатын өрнек, мысалы a әріптерінің ұзын тізбегіне қарсы (a+)+b, қойынды қатырмай, түсіндірмемен тоқтатылады. PCRE, Python немесе .NET үшін жазылған өрнектерді өзгерту қажет болуы мүмкін: JavaScript-те ие болатын квантификаторлар, атомдық топтар, рекурсия, \A және \Z жоқ.

Құпиялылық

Өрнектер мен тексерілетін мәтіндер осы браузер қойындысынан шықпайды: сәйкестік іздеу жергілікті Web Worker ішінде өтеді, сіз енгізген ештеңе серверге жүктелмейді, жазылмайды және сақталмайды, сондықтан нақты лог жолдары мен клиент деректерін қауіпсіз тексере аласыз.

Мүмкіндіктер

Нағыз JS қозғалтқышы

Браузерлер мен Node.js-тегі RegExp сияқты дәл сәйкестендіреді, v жалаушасының жиындары мен аталған топтарды қоса.

Белгілер бойынша түсіндірме

Әр топ, класс, зәкір және квантификатор қарапайым тілмен сипатталады.

Кері қайтудан қорғау

Сәйкестік іздеу 1,5 секундтық шектеумен worker ішінде жүреді, сондықтан нашар өрнек бетті қатыра алмайды.

Regex тестілеуші: жиі қойылатын сұрақтар

Бұл тестер қандай regex диалектін қолданады?
JavaScript диалектін: ол ECMAScript стандартымен анықталған және сіз қолданатын браузерде жүзеге асырылған. Ол lookbehind, аталған топтарды, Unicode қасиеттерін және v жалаушасын қолдайды, бірақ ие болатын квантификаторлар, атомдық топтар, рекурсия немесе шарттар сияқты PCRE мүмкіндіктерін қолдамайды. Python-ның (?P<name>…) жазуын мұнда (?<name>…) түрінде жазу керек. Нәтижелер сол нұсқадағы Node.js және Deno-мен сәйкес келеді.
Неге өрнегім тек бірінші сәйкестікті табады?
g жалаушасынсыз JavaScript бірінші сәйкестіктен кейін тоқтайды: exec және match бір нәтиже қайтарады, ал replace тек бірінші кездесуді өзгертеді. Барлық сәйкестікті табу және алмастыру үшін g жалаушасын қосыңыз. Жабысқақ y жалаушасы басқаша: ол алдыңғы сәйкестік аяқталған дәл сол орында ғана сәйкес келеді, бұл токенизаторлар үшін ыңғайлы.
Апатты кері қайту дегеніміз не?
Өрнек бір мәтінге көп түрлі жолмен сәйкес келе алса, мысалы (a+)+ немесе (.*)* сияқты кірістірілген квантификаторларда, сәтсіз іздеу кезінде қозғалтқыш барлық үйлесімді тексереді, ал олардың саны енгізу ұзындығымен экспоненциалды өседі. Мұнда ол 1,5 секундтан кейін ескертумен тоқтайды. Түзету үшін балама нұсқаларды бір-бірін жоятын етіңіз, мысалы үтірдің алдында .* орнына [^,]* жазыңыз.
Алмастыруда топтарды қалай қолданамын?
Нөмірленген топтар үшін $1, $2 және т.б. жазыңыз, ал (?<year>\d{4}) сияқты аталған топ үшін $<name> жазыңыз. $& бүкіл сәйкестікті, $` оның алдындағы мәтінді, $' одан кейінгі мәтінді қояды, ал $$ нақты доллар белгісін береді. Мысалды байқап көру түймесі жыл, ай және күнді осылай ауыстыратын күн өрнегін жүктейді.
u немесе v жалаушасы қашан қажет?
Мәтінде эмодзи немесе Basic Multilingual Plane-ден тыс таңбалар болса, нүкте мен квантификаторлар оларды бір таңба деп санауы үшін, сондай-ақ \p{L} сияқты Unicode қасиеттерін қолдану үшін u жалаушасын қолданыңыз. Жаңарақ v жалаушасы u-дың бәрін қамтиды және жақша ішінде жиын амалдарын қосады, мысалы ASCII емес әріптер үшін [\p{L}--[a-z]]. Бұл екі жалаушаны бірге қолдануға болмайды.