Tengo un montón de patrones comunes de expresiones regulares que obtuve de aquí . Intento aplicarlos a una cadena pero no parecen modificar nada. Simplemente me devuelve el mismo valor. ¿Puedes por favor iluminarme en lo que estoy haciendo mal?
const str = 'sadas87676szdhgzshdgszhjg,##%$,.%'; const commonRegexPatterns = { DIGITS: /^[0-9]+$/, ALPHABETIC: /^[a-zA-Z]+$/, ALPHANUMERIC: /^[a-zA-Z0-9]+$/, DATE: /^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$/, EMAIL: /^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/, ZIP: /^[0-9]{5}(?:-[0-9]{4})?$/, DIGITSWITHCOMMA: /^[\d,]/, DIGITSWITHCOMMAPERCENTAGE: /^[\d,%]/, } console.log('DIGITS', str.replace(commonRegexPatterns.DIGITS, '')); console.log('ALPHABETIC', str.replace(commonRegexPatterns.ALPHABETIC, '')); console.log('ALPHANUMERIC', str.replace(commonRegexPatterns.ALPHANUMERIC, '')); console.log('DIGITSWITHCOMMA', str.replace(commonRegexPatterns.DIGITSWITHCOMMA, '')); console.log('DIGITSWITHCOMMAPERCENTAGE', str.replace(commonRegexPatterns.DIGITSWITHCOMMAPERCENTAGE, '')); console.log('ZIP', str.replace(commonRegexPatterns.ZIP, ''));Bueno, tus patrones de expresiones regulares están mal. Ok, no es realmente "incorrecto", pero no son lo que pareces querer. Por ejemplo, DIGITS :
^[0-9]+$ Este patrón tiene anclas (el ^ es el comienzo de la cadena, el $ es el final). Coincidirá con una cadena completa de números, pero no con cualquier número dentro de una cadena. Para su propósito, lo quiere sin los anclajes, como:
[0-9]+ Lo mismo se aplica a la mayoría de los otros patrones en su fragmento. Retire los anclajes si solo está tratando de hacer coincidir parte de una cadena. Además, dado que parece estar tratando de eliminar todas las apariciones de patrones en la cadena, probablemente desee usar la bandera g en sus patrones. Por ejemplo, ALPHABETIC (sin las anclas):
/[a-zA-Z]+/Esto coincidirá con el primer grupo de letras en su cadena, pero no con los que le siguen. Si en cambio usas
/[a-zA-Z]+/gPodrás reemplazar cada partido.