Edit check/TextMatch
Una comunidad wiki puede crear sugerencias locales personalizadas utilizando TextMatch. TextMatch es una edit check que busca consultas predeterminadas y, cuando encuentra una coincidencia, muestra el cuadro de mensaje habitual de la comprobación de edición, junto con el mensaje, el título y las posibles acciones que puede realizar el editor.
Por ejemplo, una función TextMatch podría ofrecer la opción de eliminar el término encontrado, sustituirlo de una forma determinada o, simplemente, animar al editor a reflexionar sobre él. Las comprobaciones de TextMatch pueden ser muy sencillas o pueden potenciarse mediante las opciones de configuración.
Aquí tienes dos ejemplos. El primero detecta una posible expresión de tiempo relativo y enlaza con la guía correspondiente. La segunda detecta algunos posibles errores de puntuación y ofrece un botón para corregirlos.
Limitaciones actuales
A partir de junio de 2026:
- TextMatch todavía no detecta el contenido «dentro» de las plantillas
No hay forma de excluir las listas u otras etiquetas de código de la búsqueda, ni de limitar el contenido únicamente a listas, tablas, encabezados, etc.SeeinNodebelow.- See Regex queries for more details on regex-specific limitations.
- Errores pendientes y solicitudes de nuevas funciones: Búsqueda en Phabricator
Configuración
La configuración de TextMatch consta de la opción habitual Editar comprobación/Configuración y una serie de matchRules.
Cada matchRule corresponde a algo que hay que buscar y a una descripción de lo que hay que hacer cuando se encuentre.
La definición de matchRule es bastante flexible y puede abarcar desde la búsqueda de una palabra sencilla y la visualización de una advertencia predeterminada, hasta la búsqueda de un conjunto complejo de expresiones regulares y su sustitución por algo que varía en función de lo que se haya encontrado.
Consulta la sección #Ejemplo de configuración que aparece a continuación para ver ejemplos prácticos de estos casos.
| Nombre | ¿Requerido? | Tipo | Descripción | Predeterminado |
|---|---|---|---|---|
unique string id
|
Required | Cadena de texto | El nombre abreviado del TextMatch específico | |
query
|
Required | Matriz u objeto | Qué buscar. Esto puede presentarse en diversos formatos:
Ten en cuenta que cualquier coincidencia debe comenzaar y terminar en los límites de las palabras. Por ejemplo, si la consulta es foo, no se detectaría ninguna coincidencia en «foobar». Esto se aplica tanto a las reglas de coincidencia de expresiones regulares como a las que no lo son. TextMatch utiliza las mismas expresiones regulares de JavaScript que se emplean en la función de búsqueda y sustitución de VisualEditor. |
|
title
|
Required | Cadena de texto | Lo que se mostrará a los usuarios en el cuadro de diálogo de comprobación de edición. Esto solo debe incluir texto sin formato. | |
message
|
Required | Cadena de texto | Lo que se mostrará a los usuarios en el cuadro de diálogo de comprobación de edición. Esto puede incluir enlaces a la wiki y debe dirigir al usuario a cualquier documentación relevante para que pueda obtener más información. | |
mode
|
Optional | Cadena de texto | ¿Qué acciones (botones) deberían aparecer en el cuadro de diálogo de comprobación de la edición? Los modos disponibles actualmente son los siguientes: "info" (just "dismiss"), "replace" ("replace" and "dismiss"), "delete" ("delete" and "dismiss")
Si se desconoce el modo o no está definido, solo se mostrará el botón «Descartar». |
""
|
isRegExp
|
Optional | Booleano | Si es cierto, TextMatch tratará esta consulta como un patrón de expresión regular See Regex queries for more details. | false
|
config
|
Optional | Objeto | Diversas opciones de configuración que actúan a nivel de matchRule (en lugar de sobre todo el proceso de comprobación de edición TextMatch).
En el futuro, nos gustaría ofrecer más opciones, como: espacios de nombres y nombres de páginas específicos. |
|
inNode
|
Optional | Cadena de texto | Require the match to appear inside a node of this type. Node types are from the VisualEditor data model, e.g 'mwHeading' for headings, 'paragraph' for paragraphs. | |
expand
|
Optional | Cadena de texto | Si se encuentra una coincidencia, esta opción permite configurar si se debe ampliar el «área problemática» (el área resaltada) para que abarque todo el párrafo que contiene la coincidencia, en lugar de limitarse únicamente al texto coincidente.
Available options are:
|
|
preserveCase
|
Optional | Booleano | Si es cierto, y si la regla de coincidencia utiliza mode: "replace", el término de sustitución sugerido tendrá el mismo tipo de letra que el término coincidente (limitado a: mayúsculas iniciales, minúsculas y mayúsculas).
The case that the replacement has in the matchRule config is the lowest case that will ever be offered as a replacement. This is so that words like 'French' or 'USA' are never turned into invalid forms, even if replacing something fully lowercased. As such, consider writing TextMatch replacements in lowercase unless the term requires specific casing.
|
false
|
import
|
Optional | Cadena de texto | Puedes definir reglas de coincidencia más complejas en páginas JSON independientes e importarlas, para que la página JSON principal sea más breve. Las páginas deben ser nombradas MediaWiki:Editcheck-config-<name>.json ej. "import": "MediaWiki:Editcheck-config-LLM.json"
|
Regex queries
There are some specific complexities for matchRules that use regex queries.
- Plain backreferences are not supported, due to the way that all regex patterns in a query are bundled together for performance reasons. The suggested workaround is to use named backreferences.
- When using a regex pattern with alternation, order the alternatives from longest to shortest (e.g., use
"enhanc(ed|es|e|ing)"rather than"enhanc(e|ed|es|ing)") . This way the regex matches the full word before any shorter alternative can match a partial word that then fails the word-boundary check.[1]
Regex queries can always be tested using VisualEditor's "find and replace" tool (with the appropriate modifiers enabled). This is helpful to understand what it will and will not support.
- ↑ This is due to all TextMatch rules using a
wholeWordflag that restricts matches to those surrounded by word boundaries. As of June 2026 we are considering making this property configurable.
Instrucciones para testar
TextMatch forma parte de la función beta «Modo de sugerencias», que está disponible en todas las Wikipedias (véase Estado de implementación).
Para ver los tipos de comprobaciones y sugerencias «Experimentales», puedes añadir el parámetro de URL &ecenable=experimental a una sesión de edición existente en el Editor visual.
Para probar un nuevo tipo de TextMatch:
- Visita una wiki en la que TextMatchEditCheck esté disponible y en la que tengas permisos de administrador/a. Inicia sesión.
- En dicha wiki, visita
MediaWiki:Editcheck-config.json - Clica en Editar
- Inserta el código JSON de la Configuración de ejemplo o alguna configuración personalizada que siga el mismo formato.
- Si ya hay un JSON, copia solo el contenido de «textMatch»; no las llaves más externas
- Visita un artículo de esa misma wiki que probablemente contenga una de las coincidencias que aparecen en el JSON
- Abre una sesión de edición en VisualEditor utilizando el parámetro de URL
&ecenable=suggestions,experimental
Ejemplo de configuración
A continuación se muestra un ejemplo de lo que se podría configurar:
{
"textMatch": {
"enabled": true,
"matchRules": {
"british-english": {
"query": {
"chiseled": "chiselled",
"favor(ed|ite|ing)": "favour$1",
"somberly": "sombrely"
},
"title": "American English",
"mode": "replace",
"isRegExp": true,
"preserveCase": true,
"message": "This article requires British English. Fix?",
"config": {
"maximumEditCount": 500,
"account": "loggedin",
"hasTemplate": [
"Use British English",
"EngvarB"
]
}
},
"potential-LLM": {
"query": [
"(stands as|serves as|is) a (testament|reminder)",
"indelible mark",
"important to note",
"observers have cited"
],
"title": "Potential LLM content",
"message": "Is this LLM-generated content? Every edit that incorporates LLM output should be marked as LLM-assisted by identifying the name and, if possible, version of the AI in the edit summary.",
"isRegExp": true,
"config": {
"caseSensitive": false,
"minOccurrences": 3
},
"expand": "paragraph"
},
"cliches": {
"query": [
"tip of the iceberg",
"white elephant",
"gild the lily",
"take the plunge",
"took the plunge",
"ace up the sleeve",
"bird in the hand",
"twist of fate",
"at the end of the day"
],
"title": "Cliches and idioms",
"message": "Clichés and idioms should generally be avoided in favor of direct, literal expressions.",
"config": {
"account": false
}
},
"relative-time-ref": {
"query": [
"recently",
"lately",
"currently",
"today",
"presently",
"to date",
"years ago",
"formerly",
"in the past",
"traditionally",
"yesterday",
"tomorrow",
"in the future",
"to this day"
],
"title": "Relative time references",
"message": "Absolute specifications of time are preferred to relative constructions such as this, because the latter may go out of date.",
"config": {
"account": false
}
},
"editorializing": {
"query": [
"notably",
"it should be noted",
"arguably",
"interestingly",
"essentially",
"utterly",
"actually",
"clearly",
"absolutely",
"of course",
"without a doubt",
"indeed",
"happily",
"sadly",
"tragically",
"aptly",
"unfortunately",
"untimely"
],
"title": "Editorializing",
"mode": "delete",
"message": "Use of adverbs such as these, to highlight something as particularly significant or certain without attributing that opinion, should usually be avoided so as to maintain an impartial tone.",
"config": {
"account": false
}
},
"puffery": {
"query": [
"legendary",
"greatest",
"acclaimed",
"iconic",
"visionary",
"outstanding",
"leading",
"celebrated",
"popular",
"landmark",
"cutting-edge",
"innovative",
"revolutionary",
"extraordinary",
"brilliant",
"famous",
"renowned",
"remarkable",
"prestigious",
"world-class",
"respected",
"notable",
"virtuoso",
"honorable",
"awesome",
"unique",
"pioneering",
"phenomenal",
"prominent"
],
"title": "Puffery",
"mode": "delete",
"message": "Words such as these are often used without attribution to promote the subject of an article and should usually be avoided.",
"config": {
"account": false
}
}
}
}
}