Estoy tratando de hacer coincidir una cadena si es tanto singular como plural usando javascript.
Debido a que necesito usar una variable, estoy usando RexExp, pero siempre vuelve a ser verdadero, incluso si uso checksxcd o cualquier otra cosa, siempre que check esté allí, pasa.
let str = 'check' let reg = new RegExp("(["+ str +"])(s\\b|\\b)", "g"); reg.test(check) // Returns trueSi pruebo esto sin usar la variable str, funciona solo para singluar y solo plural de la verificación de palabras como se esperaba.
let reg = new RegExp(/([check])(s\b|\b)/, "g");Supongo que tengo un problema de sintaxis, pero parece que no puedo averiguar qué estoy haciendo mal. Cualquier ayuda es apreciada.
Está utilizando str en la expresión regular y está ejecutando la verificación contra la cadena str . Es por eso que el resultado siempre será cierto .
Puedes usar
let str = 'checkl' let reg = new RegExp("\\b"+ str + "(?:e?s)?\\b") console.log(reg.test("A check")) // => false console.log(reg.test("A checkl")) // => true No use la bandera g cuando use una expresión regular en RegExp#test , eso puede conducir a resultados inesperados .
Tenga en cuenta que agregué una e opcional antes de la terminación s , ya que las terminaciones de los sustantivos pueden ser es o s .
Detalles del patrón :
\b - un límite de palabrastr - la palabra str(?:e?s)? - una secuencia opcional de una e opcional y luego s (por lo que es s o es o una cadena vacía)\b - un límite de palabra.