# MatchRegEx - función de script y de gráfico

MatchRegEx() compara la cadena de entrada con uno o varios patrones de expresión regular especificados y devuelve la ubicación numérica de los patrones de expresión regular que coinciden. Si no se encuentra ninguna coincidencia, la función devuelve 0. Esta función sólo busca coincidencias exactas.

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.

Sintaxis:

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. |
| 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('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Devuelve `3`. El tercer patrón regex es el primero que coincide 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

Descripción

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)

#### Expresión de gráfico y resultados

Descripción

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 ISBN Format:

```
=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 |

## Más información

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