# MatchRegEx Función de script y de gráfico

MatchRegEx() compara una cadena de entrada (text) con una o más expresiones regulares (regex). Devuelve la ubicación numérica de los patrones de expresión regular que coincidan. Devuelve una respuesta de coincidencia solo si la evaluación de la expresión regular coincide con toda la entrada de texto. Si no se encuentra ninguna coincidencia, la función devuelve 0.

Esta función realiza operaciones regex que distinguen entre mayúsculas y minúsculas. Puede utilizar alternativamente la variante MatchRegExI() para realizar operaciones regex sin distinguir mayúsculas de minúsculas.

MatchRegEx (text, regex1 [ , regex2,...regexN])

Tipo de datos que devuelve: entero

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | El texto de la cadena de entrada con el que desea hacer coincidir una o varias expresiones regulares. Para que se produzca un resultado, esta cadena de entrada debe coincidir exactamente con el patrón regex. |
| regex | La expresión regular que se intentará hacer coincidir con la cadena de entrada. Puede especificar más de una expresión regular en una única expresión, separadas como argumentos sucesivos. |

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `MatchRegEx('testSample','test')` | Devuelve `0` . La función solo devuelve un resultado cuando hay una coincidencia exacta entre text y el patrón regex. Aunque `testSample` contiene `test`, contiene otro texto (`Sample`), lo que impide una coincidencia exacta. |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Devuelve `3` .El tercer patrón regex es el primero en coincidir con los datos. |
| `MatchRegEx('ABC','[abc]+','[123]')` | Devuelve `0`, porque MatchRegEx() distingue entre mayúsculas y minúsculas. |
| `MatchRegExI('ABC','[abc]+','[123]')` | Devuelve `1` .Se utiliza la variante de la función que no distingue entre mayúsculas y minúsculas, MatchRegExI(). |

## Cuándo se utiliza

Los casos de uso de esta función incluyen:

* Validar el texto para cumplir las normas de formato y conformidad, e identificar errores en los datos.

* Identificar las diferencias en el formato del texto. Por ejemplo, puede identificar cuántos números de teléfono utilizan el formato A, el formato B, etc.

## Ejemplo 1: script de carga para analizar los formatos de los números de teléfono

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una tabla `BusinessContactInfo` que contiene los números de teléfono de contacto de varias empresas. Los números de teléfono son números de teléfono NANP de 10 dígitos.

* Un campo calculado, `PhoneNumberFormat`, para evaluar si cada número de teléfono coincide con uno de un conjunto específico de formatos de número de teléfono.

Hay tres formatos diferentes que queremos comprobar: (###) ###-####, ###-##-####, y ##########.

Script de carga

```
BusinessContactInfo:

Load MatchRegEx(ContactInfo,'\({0,1}[0-9]{3}\) [0-9]{3}-[0-9]{4}', '[0-9]{3}-[0-9]{3}-[0-9]{4}', '[0-9]{10}') as PhoneNumberFormat,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890
2	Company B	0123456790
3	Company C	234-567-8901
4	Company D	(024) 680-2456
5	Company E	(135) 791-3579
6	Company F	8901234567
7	Company G	235-235-2352
8	Company H	(555) (555) (5555)
9	Company I	2342342343
10	Company J	444-444-4444
` (delimiter is '\t');
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

Tabla de resultados

| CompanyName | ContactInfo | PhoneNumberFormat |
| --- | --- | --- |
| Company A | (123) 456-7890 | 1 |
| Company B | 0123456790 | 3 |
| Company C | 234-567-8901 | 2 |
| Company D | (024) 680-2456 | 1 |
| Company E | (135) 791-3579 | 1 |
| Company F | 8901234567 | 3 |
| Company G | 235-235-2352 | 2 |
| Company H | (555) (555) (5555) | 0 |
| Company I | 2342342343 | 3 |
| Company J | 444-444-4444 | 2 |

A partir de aquí, por ejemplo, podría crear unos KPI para calcular el recuento total de cada formato de número de teléfono, así como la cantidad de números de teléfono que no tienen un formato reconocido:

Ejemplos de expresiones de agregación para contar las instancias de cada formato

| Formato | Número de instancias | Expresión de gráfico |
| --- | --- | --- |
| (###) ###-#### | 3 | =Count({&lt;PhoneNumberFormat={'1'}&gt;} PhoneNumberFormat) |
| ###-###-#### | 3 | =Count({&lt;PhoneNumberFormat={'2'}&gt;} PhoneNumberFormat) |
| ########## | 3 | =Count({&lt;PhoneNumberFormat={'3'}&gt;} PhoneNumberFormat) |
| Unrecognized format | 1 | =Count({&lt;PhoneNumberFormat={'0'}&gt;} PhoneNumberFormat) |

## Ejemplo 2: expresión de gráfico para identificar el formato ISBN

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### Gráfico de expresión y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una tabla `Books` que muestra los códigos ISBN de varios libros.

A partir de estos datos, queremos identificar si cada código ISBN es un código válido de 10 o 13 dígitos, basándonos en la sintaxis especificada en un patrón regex.

Script de carga

```
Books:

Load * Inline [
Book
ISBN 123-3-1234-1234-0
ISBN 012-2-0123-0123-4
ISBN 000-1-0123-0123-2
ISBN 0-111-23456-7
ISBN 555-2-5555-5555-3
ISBN 222-4-2222-2222-2
ISBN 1-901-23456-8
ISBN 333-3-3333-3333-3
ISBN 555-1-5151-5151-3
ISBN 232-1-2323-2323-1
ISBN 2-444-44444-4
ISBN 888-0-9999-0000-0
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `Book`

Añada esta dimensión calculada y asígnele la etiqueta ISBNFormat:

```
=if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=1, '13-digit', 
	if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=2, '10-digit',
		'Invalid ISBN'))
```

Tabla de resultados

| Book | ISBN Format |
| --- | --- |
| ISBN 000-1-0123-0123-2 | 13-digit |
| ISBN 0-111-23456-7 | 10-digit |
| ISBN 1-901-23456-8 | 10-digit |
| ISBN 2-444-44444-4 | 10-digit |
| ISBN 012-2-0123-0123-4 | 13-digit |
| ISBN 123-3-1234-1234-0 | 13-digit |
| ISBN 222-4-2222-2222-2 | 13-digit |
| ISBN 232-1-2323-2323-1 | 13-digit |
| ISBN 333-3-3333-3333-3 | 13-digit |
| ISBN 555-1-5151-5151-3 | 13-digit |
| ISBN 555-2-5555-5555-3 | 13-digit |
| ISBN 888-0-9999-0000-0 | 13-digit |

[Trabajar con expresiones regulares en scripts de carga y expresiones de gráfico](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)