ng-pattern no debe coincidir con el patrón suministrado

En ng-pattern tenemos la opción de especificar que el campo debe coincidir con un patrón específico.

¿Cómo podemos especificar que NO debe coincidir con el patrón especificado?

Ejemplo,

 <input type="text" ng-pattern="/[*|\":<>[\]{}`()';@&$]/" /> 

Aquí, NO deseo que el campo coincida con el patrón. Por el contrario, quiero mostrar un error si el patrón coincide.

Para comprobar si una cadena no tiene alguna subcadena, puede utilizar una búsqueda anticipada string-start-anclanetworking:

 /^(?!.*[*|\x22:<>[\]{}`()';@&$])/ 

Ver demostración

En AngularJS, el patrón no tiene que coincidir con la cadena completa si se pasa un object RegExp (el que tiene delimitadores), por lo que esta expresión regular se adapta bien al propósito actual (basta con comprobar si una condición es verdadera o falsa).

Tenga en count que la solución de token codiciosa templada comúnmente utilizada ^(?:(?![*|\x22:<>\[\]{}`()';@&$]).)*$ (Ver demostración ) puede ser También se usa, pero es less eficiente ya que cada position en la cadena de input está marcada.

Además, es conveniente usar \x22 para hacer coincidir una comilla doble en el valor ng-pattern .

Podría usar un lookaround negativo ( (?!pattern) ) para negar su expresión regular:

 ng-pattern="/(?![*|\":<>[\]{}`()';@&$])/"