Quería diseñar una expresión regular para no permitir espacios en blanco al principio y al final de una cadena, pero permite todos los caracteres especiales, espacios, alfabetos en minúsculas y mayúsculas y números en el medio
La expresión regular que probé es:
'^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$' Lo estoy usando como un validador de patrones dentro de la entrada en angular como: pattern ="^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$'"
cualquier ayuda sería muy apreciada
Todos los alfabetos ASCII y caracteres especiales se definen con [!-\[\]-~]
Al asegurarse de que el primero y el último opcional sea esta clase, es todo lo que se necesita.
^[!-\[\]-~]+(?:[^\S\r\n]*[!-\[\]-~])*$
https://regex101.com/r/JpsOvy/1
^ [!-\[\]-~]+ (?: [^\S\r\n]* [!-\[\]-~] )* $ [^\S\r\n] es solo un espacio en blanco sin salto de línea. Reemplace con \s si es necesario.
Necesitas cualquiera
Validators.pattern('\\S(?:.*\\S)?')O
Validators.pattern(/^\S(?:.*\S)?$/) En ambos casos, la expresión regular es ^\S(?:.*\S)?$ y coincide
^ - comienzo de la cadena\S - cualquier carácter que no sea un espacio en blanco(?:.*\S)? - una ocurrencia opcional de cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible y luego un carácter que no sea un espacio en blanco$ - final de la cadena.