Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

527
Views
Validación Regex para entrada de usuario en React
  • Estoy tratando de implementar una búsqueda usando expresiones regulares. Para validar si el valor ingresado es una expresión regular válida en el cuadro de búsqueda, estoy usando el código fuente de una biblioteca regex-validate (BIBLIOTECA DE VALIDACIÓN DE REGEX - regex-regex )

  • Si el valor ingresado es una expresión regular válida, lo estoy analizando en una expresión regular usando el código fuente de esta biblioteca Regex-Parse ) (BIBLIOTECA DE ANÁLISIS - Regex Parser ) para filtrar/buscar usando la expresión regular analizada. Aquí hay un fragmento de código para lo mismo

 import { useState } from "react"; import "./styles.css"; import { re, RegexParser } from "./regexValidation"; export default function App() { const [val, setVal] = useState(""); const [validRegex, setValidRegex] = useState(false); const validateRegex = (val: string) => { setVal(val); if (val === "") { setValidRegex(false); return; } // to check if the entered value(val) is a valied regex in string if (re.test(val)) { setValidRegex(false); // parsing the entered value(val) to a regularexpression const convertToRegex = RegexParser(val); //filtering logic to filter based on convertToRegex variable } else { setValidRegex(true); } }; const handleChange = (e: any) => { validateRegex(e.target.value); }; return ( <div className="App"> <input value={val} onChange={handleChange}></input> <h1>{validRegex ? "inValidRegex" : "ValidRegex"}</h1> </div> ); }

  • Enlace CodeSandBox para la búsqueda de expresiones regulares RegexValidationSearch

  • Me enfrento a un problema cuando el usuario ingresa '/?/' o '/*/', re.test(val) devuelve verdadero, lo que implica que es una expresión regular válida, pero cuando intenta analizarse, esa es esta línea de código const convertToRegex = RegexParser(val) arroja el siguiente error RegexError

  • ¿Hay alguna forma de solucionar esto de modo que esta línea de código re.test(val) devuelva falso cuando el usuario ingresa una expresión regular no válida allí, lo que implica que es una expresión regular no válida (en formato de cadena) y, por lo tanto, no hay necesidad de analizarlo a una expresión regular

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Parece que podría ser una incompatibilidad entre las dos bibliotecas que está utilizando (es decir, tienen ideas diferentes de lo que es Regex válido).

La forma más fácil de solucionar esto (y, sinceramente, también la más segura, ya que se trata de la entrada del usuario) es ajustar toda la lógica de análisis con un intento/captura como este:

 // to check if the entered value(val) is a valied regex in string if (re.test(val)) { let convertToRegex; try { convertToRegex = RegexParser(val); setValidRegex(true); // only set this AFTER a successful parse. // also note I've swapped the true / false value here. } catch (e) { setValidRegex(false); } if (convertToRegex) { // TODO: implement filtering logic based on convertToRegex variable } } else { // NOTE: it didn't parse correctly, shouldn't this be false? setValidRegex(false); // I've changed it for you }

También creo (?) que ha cometido un par de errores en la forma en que maneja setValidRegex que he corregido en el código. ¡No sea optimista y diga que la entrada del usuario es una expresión regular válida cuando en realidad no ha confirmado (mediante la creación de un RegexParser ) que lo es!

Con este enfoque, existe un argumento para eliminar por re.test(val) y la otra biblioteca, ya que puede obtener lo que desea con solo try/catch -ing. Depende de usted decidir si esta es una opción decente para su base de código.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!