validar validacion vacios programacion orientada objetos formularios formulario enviar ejemplos ejemplo con campos antes javascript regex case-sensitive case-insensitive

validacion - validar formulario javascript html5



Javascript: resalte la subcadena manteniendo el caso original pero buscando en modo insensible al caso (9)

Hago exactamente lo mismo.

Necesitas hacer una copia.

Almaceno en la base de datos una copia de la cadena real, en minúsculas.

Luego busco usando una versión minúscula de la cadena de consulta o hago una expresión regular que no distingue entre mayúsculas y minúsculas.

Luego use el índice de inicio encontrado resultante en la cadena principal, más la longitud de la cadena de consulta, para resaltar la cadena de consulta dentro del resultado.

No puede utilizar la cadena de consulta en el resultado ya que su caso no está determinado. Es necesario resaltar una parte de la cadena original .

Estoy tratando de escribir un "cuadro de búsqueda de sugerencias" y no puedo encontrar una solución que permita resaltar una subcadena con javascript manteniendo el caso original.

Por ejemplo, si busco " ca ", busco el lado del servidor en un modo que no distingue entre mayúsculas y minúsculas y tengo los siguientes resultados:

Calculadora

calendario

ESCAPAR

Me gustaría ver la cadena de búsqueda en todas las palabras anteriores, por lo que el resultado debería ser:

Ca lculator

ca lendar

ES CA PE

Lo intenté con el siguiente código:

var reg = new RegExp(querystr, ''gi''); var final_str = ''foo '' + result.replace(reg, ''<b>''+querystr+''</b>''); $(''#''+id).html(final_str);

Pero obviamente de esta manera pierdo el estuche original!

¿Hay alguna manera de resolver este problema?


He encontrado una manera más fácil de lograrlo. La expresión regular de JavaScript recuerda la cadena que coincide. Esta característica se puede utilizar aquí.

He modificado un poco el código.

reg = new RegExp("("+querystr.trim()+")", ''gi''); final_str = ''foo '' + result.replace(reg, "<b>&1</b>"); $(''#''+id).html(final_str);


No es exactamente perfecto, ya que reemplaza a todos por una char inferior

let ߐ = document.body function check(_ૐ){ _ૐ_ = new RegExp(_ૐ, "ig") ߐ.innerHTML=ߐ.innerHTML.replace(_ૐ_,"<b>"+_ૐ+"</b>") } check(''ca'')

Calculator calendar ESCAPE Cardan de voiture cassé


Si bien las otras respuestas hasta ahora parecen simples, no se pueden usar realmente en muchos casos del mundo real, ya que no manejan el texto HTML correcto que se escapa y el RegExp que se escapa. Si desea resaltar todos los fragmentos posibles, mientras escapa el texto correctamente, una función como esa devolvería todos los elementos que debería agregar a su cuadro de sugerencias:

function highlightLabel(label, term) { if (!term) return [ document.createTextNode(label) ] const regex = new RegExp(term.replace(/[//^$*+?.()|[/]{}]/g, ''//$&''), ''gi'') const result = [] let left, match, right = label while (match = right.match(regex)) { const m = match[0], hl = document.createElement(''b''), i = match.index b.innerText = m left = right.slice(0, i) right = right.slice(i + m.length) result.push(createTextNode(left), hl) if (!right.length) return result } result.push(createTextNode(right)) return result }


Utilice una función para el segundo argumento para .replace() que devuelve la cadena coincidente real con las etiquetas concatenadas.

Pruébelo: http://jsfiddle.net/4sGLL/

reg = new RegExp(querystr, ''gi''); // The str parameter references the matched string // --------------------------------------v final_str = ''foo '' + result.replace(reg, function(str) {return ''<b>''+str+''</b>''}); $(''#'' + id).html(final_str);​

Ejemplo de JSFiddle con entrada: https://jsfiddle.net/pawmbude/


Versión ES6

const highlight = (needle, haystack) => haystack.replace(new RegExp(needle, ''gi''), str => `<strong>${str} </strong>`)


buenos resultados con

function str_highlight_text(string, str_to_highlight){ var reg = new RegExp(str_to_highlight, ''gi''); return string.replace(reg, function(str) {return ''<span style="background-color:#ffbf00;color:#fff;"><b>''+str+''</b></span>''}); }

y más fácil de recordar ... gracias al usuario 113716: https://.com/a/3294644/2065594


.match() realiza una coincidencia que no distingue entre mayúsculas y minúsculas y devuelve una matriz de las coincidencias con un caso intacto.

var matches = str.match(queryString), startHere = 0, nextMatch, resultStr ='''', qLength = queryString.length; for (var match in matches) { nextMatch = str.substr(startHere).indexOf(match); resultStr = resultStr + str.substr(startHere, nextMatch) + ''<b>'' + match + ''</b>''; startHere = nextMatch + qLength; }


Resalte el término de búsqueda y el anclaje a la primera aparición - Inicio

function highlightSearchText(searchText) { var innerHTML = document.documentElement.innerHTML; var replaceString = ''<mark>''+searchText+''</mark>''; var newInnerHtml = this.replaceAll(innerHTML, searchText, replaceString); document.documentElement.innerHTML = newInnerHtml; var elmnt = document.documentElement.getElementsByTagName(''mark'')[0] elmnt.scrollIntoView(); } function replaceAll(str, querystr, replace) { var reg = new RegExp(querystr, ''gi''); var final_str = str.replace(reg, function(str) {return ''<mark>''+str+''</mark>''}); return final_str }

Resalte el término de búsqueda y el anclaje a la primera aparición - Fin