javascript - only - ¿Por qué Angularjs ng-pattern no funciona con la siguiente expresión regular?
ng-pattern solo numeros (3)
Si en efecto Esto me estaba causando un problema para ... omitir las citas es lo que me lo arregló.
$scope.regVal= /([A-Z]{3}/s?(/d{3}|/d{2}|d{1})/s?[A-Z])|([A-Z]/s?(/d{3}|/d{2}|/d{1})/s?[A-Z]{3})|(([A-HK-PRSVWY][A-HJ-PR-Y])/s?([0][2-9]|[1-9][0-9])/s?[A-HJ-PR-Z]{3})/;
Por alguna razón, el valor inicializado no aparece en el campo, pero el segundo campo sin el patrón ng funciona. ¿algunas ideas?
angular.module(''app'', []).controller(''MainCtrl'', function($scope) {
$scope.widget = {title: ''abc'', title2: ''abc''};
});
<div ng-app="app" ng-controller="MainCtrl">
<input ng-model="widget.title" required ng-pattern="/[a-zA-Z]{4}[0-9]{6,6}[a-zA-Z0-9]{3}/">
<br /><br />
input 1: {{ widget.title }}
<br /><br />
<input ng-model="widget.title2" required>
<br /><br />
input 2: {{ widget.title2 }}
</div>
Aquí está el Fiddle http://jsfiddle.net/wkzab/1/
Yo también estaba enfrentando el mismo problema. Encontré una solución para hacer esto.
Tienes que hacer algo como esto en tu controlador.
$scope.myRegex = /[a-zA-Z]{4}[0-9]{6,6}[a-zA-Z0-9]{3}/;
(No ponga la expresión entre comillas)
Finalmente
<input ng-model="widget.title" required ng-pattern="myRegex">
Ahora estará funcionando.
ACTUALIZAR
Lo examiné un poco (nunca usé realmente Angular), y al usar el atributo name
en el formulario y en las entradas, puede capturar un error como el que se muestra en mi JSFiddle más JSFiddle . Está en el formato: {{formName.inputName.$error}}
. Esto devuelve un objeto con parámetros que son iguales a un valor booleano. Por lo tanto, {{form.title.$error.pattern}}
cumplirá cuando exista un error con la expresión regular (para que usted muestre el error). También limpié (funciona igual) su expresión regular para: /^[AZ]{4}/d{6}[AZ/d]{3}$/i
.
ANTIGUO
El atributo ng-pattern
intenta coincidir con el campo basado en esta expresión regular: /[a-zA-Z]{4}[0-9]{6,6}[a-zA-Z0-9]{3}/
. Esto se traduce en 4 caracteres alfabéticos, 6 dígitos y 3 caracteres alfanuméricos. Una vez que tenga un patrón coincidente, se mostrará.
Debería poder eliminar el atributo ng-pattern
o cambiar la expresión para que sea menos específica. Por ejemplo, este JSFiddle aceptará cualquier valor siempre que la cadena completa sea alfanumérica. Actualiza la pregunta si quieres ayuda con un patrón diferente.