Provador d'expressions regulars
Prova expressions regulars de JavaScript en directe amb coincidències ressaltades, grups de captura, substitució i una explicació clara de cada element.
| # | Posició | Coincidència | Grups |
|---|
Explicació del patró
Avís: un grup repetit conté un altre quantificador obert, per exemple (a+)+. Aquests patrons poden trigar un temps exponencial amb textos que gairebé coincideixen (backtracking catastròfic).
Com utilitzar el provador de regex
- Escriu el patró a Expressió regular, sense les barres que l’envolten. Les barres i els indicadors actius es mostren al voltant del camp, com a
/patró/g. - Marca els Indicadors que necessitis:
g(global),i(ignora majúscules i minúscules),m(multilínia),s(dotAll),u(unicode) oy(sticky). - Enganxa el text on cercar a Text de prova. Les coincidències es ressalten mentre escrius, i la taula llista cada coincidència amb la seva posició i els seus grups de captura.
- Per provar una substitució, omple Substitució. El quadre Resultat després de la substitució mostra el text amb cada coincidència substituïda, a punt per copiar.
- Llegeix l’Explicació del patró per comprovar què fa cada part de la regex. No saps per on començar? Fes clic a Carrega un exemple.
Què mostra el provador
- Coincidències ressaltades: cada coincidència del text de prova queda marcada, de manera que veus d’un cop d’ull què es reconeix i què es deixa passar.
- Taula de coincidències: el número de cada coincidència, la seva posició (desplaçament en caràcters des de l’inici, comptant des de 0), el text reconegut i el valor de cada grup de captura. Els grups amb nom, com
(?<any>\d{4}), apareixen amb el seu nom, i els grups que no han participat en la coincidència es mostren com a «(sense coincidència)». Es llisten les primeres 1.000 coincidències. - Substitució: el text de substitució utilitza la sintaxi de JavaScript:
$1o$2per als grups numerats,$<nom>per als grups amb nom,$&per a tota la coincidència i$$per a un signe de dòlar literal. Sense l’indicadorg, només se substitueix la primera coincidència. - Explicació: el patró es divideix en elements (text literal, classes de caràcters, àncores, grups, quantificadors, lookarounds, referències enrere), cadascun amb una descripció breu. Els grups imbricats es mostren sagnats, cosa que fa molt més fàcil revisar patrons llargs.
Els indicadors en breu
| Indicador | Efecte |
|---|---|
g |
Troba totes les coincidències en comptes d’aturar-se en la primera |
i |
Ignora la diferència entre majúscules i minúscules |
m |
^ i $ coincideixen a l’inici i al final de cada línia |
s |
. també reconeix salts de línia |
u |
Mode Unicode complet: \u{…}, \p{…} i els emojis es tracten com a caràcters únics |
y |
Sticky: cada coincidència ha de començar exactament on acabava l’anterior |
Backtracking catastròfic
Alguns patrons triguen un temps exponencial amb textos que gairebé coincideixen. L’exemple clàssic és (a+)+$ aplicat a una tirallonga de a seguida d’una b: el motor prova totes les maneres de repartir les a entre els dos quantificadors abans de rendir-se. Aquest problema, conegut com a ReDoS, ha fet caure llocs web reals.
Aquesta eina protegeix el teu navegador de tres maneres. La cerca s’executa en un worker en segon pla que s’atura al cap d‘1,5 segons; el text de prova està limitat a 100.000 caràcters; i l’explicació t’avisa quan un grup repetit conté un altre quantificador obert. Quan un patró excedeix el temps, reescriu-lo de manera que cada caràcter només es pugui reconèixer d’una manera, per exemple a+$ en comptes de (a+)+$.
Preguntes freqüents
Quin dialecte de regex fa servir aquesta eina?
Fa servir el motor de JavaScript (ECMAScript) del teu navegador, exactament igual que ho farien new RegExp() i String.prototype.replace() al teu codi. La major part de la sintaxi és compartida amb PCRE, Python i Java, però algunes funcions difereixen: els quantificadors possessius i els grups atòmics no existeixen en JavaScript, i el lookbehind l’admeten tots els navegadors actuals.
Per què el meu patró només troba una coincidència?
L’indicador g està desactivat. Sense ell, JavaScript s’atura després de la primera coincidència, i la substitució només canvia aquesta.
Com reconec un punt, un claudàtor o un signe d'interrogació literals?
Escapa’l amb una barra invertida: \., \[, \?. L’explicació mostra els caràcters escapats com a «(escapat)» perquè ho puguis comprovar.
S'envia el meu text enlloc?
No. El patró i el text es processen només al teu navegador, cosa que fa aquesta eina segura per a fitxers de registre o dades que contenen informació personal.
Per què la posició és diferent de la columna del meu editor?
Les posicions compten els caràcters des de 0, a través de totes les línies, com fa match.index de JavaScript. Els salts de línia compten com un sol caràcter, i un emoji fora del pla multilingüe bàsic compta com dos.
Eines relacionades
- Formatador i validador de JSON Formatador i validador de JSON gratuït que embelleix, minimitza i comprova JSON al navegador, amb els errors de sintaxi indicats per línia i columna.
- Codificador i descodificador d'URL Codificador i descodificador d'URL gratuït. Codifica paràmetres o URL completes, descodifica seqüències %XX i tracta + com a espai, al navegador.
- Generador de hash (MD5, SHA-256) Genera hashos MD5, SHA-1, SHA-256 i SHA-512 de text o de fitxers de qualsevol mida i verifica sumes de verificació. Tot s'executa al navegador.