Estoy usando la tabla Bootrap-vue y filtrando los resultados y necesito ayuda para insertar un filtro de expresiones regulares para excluir palabras/letras con acentos.
Este es un fragmento de expresión regular:
string.replace('/[áàãâä]/ui', 'a'); string.replace('/[éèêë]/ui', 'e'); string.replace('/[íìîï]/ui', 'i'); string.replace('/[óòõôö]/ui', 'o'); string.replace('/[úùûü]/ui', 'u'); string.replace('/[ç]/ui', 'c');Entrada para que el usuario escriba:
<b-form-input id="filter-input" v-model="filter" type="search" placeholder="Pesquise por Zona, WhatsApp ou E-mail" ></b-form-inputMesa:
<b-table :items="items" :fields="fields" :filter="filter" hover striped> <template #cell(whatsapp)="data"> <span v-html="data.value"></span> </template> <template #cell(email)="data"> <span v-html="data.value"></span> </template> </b-table>Y finalmente, línea de filtro vue:
filter: null,Entonces mi pregunta es: ¿Cómo puedo colocar el filtro regex en el filtro de tabla bootstrap-vue, es posible?
Podría usar una propiedad calculada que crea una expresión regular a partir de la propiedad de filter , reemplazando las letras sin decorar con los posibles acentos de letras:
export default { computed: { computedFilter() { const pattern = this.filter .replace(/a/g, '[aáàãâä]') .replace(/e/g, '[eéèêë]') .replace(/i/g, '[iíìîï]') .replace(/o/g, '[oóòõôö]') .replace(/u/g, '[uúùûü]') .replace(/c/g, '[cç]') return new RegExp(pattern, 'ui') } } }Luego use el accesorio calculado en su plantilla:
<b-table :filter="computedFilter">