Estoy haciendo una validación de javascript en un valor de cadena pasado que debería estar en formato rem. Buscando alguna orientación sobre el patrón Regex que coincida.
Esto es lo que tengo actualmente:
^\d*\.\d*(rem)$Sin embargo, esto no coincidirá, por ejemplo (5rem). Estoy seguro de que me debe estar perdiendo algo simple. También estoy abierto a enfoques que no sean expresiones regulares.
Es difícil saber qué valores posibles necesita hacer coincidir según su pregunta, pero creo que el problema podría ser que su expresión regular actual espera que exista un punto decimal entre dos dígitos, o al menos después del primero.
Si el valor rem no contiene algo todo el tiempo, puede usar el ? o * . Para la coincidencia decimal literal, probablemente querrá usar ? .
A menos que necesite hacer coincidir un grupo, los paréntesis no son necesarios.
Espero que \d\.?\d*rem funcione para usted.
Regex101 es mi herramienta preferida para probar expresiones .
Debe verificar el punto flotante condicionalmente. Prueba esto:
let pattern = /^-?\d*(\.\d+)?(rem)$/ pattern.test("5rem"); // true pattern.test("25rem"); // true pattern.test("2.5rem"); // true pattern.test("-2.5rem"); // true pattern.test("5em"); // falseNo coincide con valores negativos:
let pattern = /^\d*(\.\d+)?(rem)$/ pattern.test("5rem"); // true pattern.test("25rem"); // true pattern.test("2.5rem"); // true pattern.test("-2.5rem"); // false pattern.test("5em"); // false