我试图使用ng-pattern指令验证angularJs中的电子邮件ID字段.
但我是AngularJs的新手.一旦用户输入错误的电子邮件ID,我就需要显示错误消息.
我下面的代码是试图解决的.帮助我使用ng-pattern来获得正确的结果.
<script type="text/javascript" src="/Login/script/ang.js"></script>
<script type="text/javascript">
function Ctrl($scope) {
$scope.text = 'enter email';
$scope.word = /^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/;
}
</script>
</head>
<body>
<form name="myform" ng-controller="Ctrl">
<input type="text" ng-pattern="word" name="email">
<span class="error" ng-show="myform.email.$error.pattern">
invalid email!
</span>
<input type="submit" value="submit">
</form>
</body>
Run Code Online (Sandbox Code Playgroud) 我想验证用户输入的密码是否符合以下条件:
密码长度至少应为8个字符,并且应包含一个数字,一个字符和一个特殊字符.
为此我使用了以下正则表达式:
^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$
Run Code Online (Sandbox Code Playgroud)
我在angularjs代码中尝试了这个表达式,如下所示:
<md-input-container class="md-block" style="margin-top:0px;">
<label>Password</label> <md-icon
md-svg-src="/images/icons/ic_lock_black_24px.svg" class="name"></md-icon>
<input type="password" ng-model="newUser.userPassword"
name="userPassword" required
ng-pattern="^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$">
<div
ng-messages="registerForm.userPassword.$error">
<div ng-message="pattern">Password should be atleast 8 characters long
and should contain one number,one character and one special
character</div>
<div ng-message="required">Password should be atleast 8 characters
long and should contain one number,one character and one special
character</div>
</div>
</md-input-container>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当密码字段为空并且焦点丢失时,将显示错误消息.如果用户输入的密码不符合我提到的标准,则不会显示错误消息.
我该如何解决这个问题?有人请帮帮我.
javascript validation angularjs ng-pattern angularjs-ng-pattern
有没有办法在angularjs中实现条件ng-pattern
ng-pattern="(myForm.exipration.$dirty ? ('/^\d{2}[/]\d{4}$/') : '')"
Run Code Online (Sandbox Code Playgroud)
我尝试过如上所述,但没有帮助.
请看看plunker.
http://plnkr.co/edit/DuTFYbLVbPkCIvRznYjG?p=preview
其中ng-pattern regEx不适用于输入文本字段.
只需要正确应用所需验证的地方.
HTML:
<body ng-controller="tableController">
<form name="test">
<div ng-repeat="model in models">
<span ng-bind="model.caption"></span>
<div ng-form name="frm{{$index}}">
<input name="input{{$index}}"
ng-model="data[model.name]"
ng-disabled="model.isDisabled"
minlength="{{model.minlength}}"
maxlength="{{model.maxlength}}"
ng-show="model.isShow"
ng-pattern="model.pattern"
ng-required="true" />
<br />
{{data[model.name]}}
</div>
</div>
</form>
<br />
<br />
</body>
Run Code Online (Sandbox Code Playgroud)
JS:
angular.module("app", []).controller("tableController", function ($scope) {
$scope.regEx = "/^\\d+$/";
$scope.data = {};
$scope.data.one = 234;
$scope.data.two = 32432;
$scope.models = [
{ name: "one", caption: "cOne", isDisabled: false, isShow: true, minlength: 2, maxlength: 10, pattern: "/^\d+$/" },
{ name: "two", …Run Code Online (Sandbox Code Playgroud) 下面的代码不起作用..
<input type="text"
class="form-control input-sm"
placeholder="hh:mm:ss"
name="hhmmss"
ng-model="data.hhmmss"
ui-mask="99:99:99"
ng-pattern="/^([0-2]|0[0-9]|1[0-9]|2[0-3]):?[0-5][0-9]:?[0-5][0-9]$/"
/>
Run Code Online (Sandbox Code Playgroud)
当输入值是20:00:00,然后formName.hhmmss.$error.pattern是true.
如果删除ui-mask:
<input type="text"
class="form-control input-sm"
placeholder="hh:mm:ss"
name="hhmmss"
ng-model="data.hhmmss"
ng-pattern="/^([0-2]|0[0-9]|1[0-9]|2[0-3]):?[0-5][0-9]:?[0-5][0-9]$/"
/>
Run Code Online (Sandbox Code Playgroud)
当输入值是20:00:00,然后formName.hhmmss.$error.pattern是false.
我如何使用正则表达式ng-pattern?
我有一个简单的文本输入,我只想允许浮点数和整数(注意:玉)
input.form-control(type="text", ng-model='usd', ng-pattern="nums",ng-change='convert_to_btc()', placeholder="USD")
Run Code Online (Sandbox Code Playgroud)
然而它不起作用,我总是可以在输入中插入任何字符(我是否需要做更多才能显示某些内容?例如,如果它不正确则需要红色边框?或者应该只是那些字符甚至无法输入?)模式是一个正则表达式,因此不是一个字符串,所以应该没关系???
这是控制器:
app.controller("AppCtrl", function AppCtrl($scope, $http, $interval ) {
//lots of other stuff
$scope.nums = /^\-?\d+((\.|\,)\d+)?$/; //note no string, it's a regex
}
Run Code Online (Sandbox Code Playgroud)
这是生成的HTML.这可能是问题吗?生成的HTML实际上有一个字符串,而不是一个正则表达式!?
<input type="text" ng-model="usd" ng-pattern="/^\-?\d+((\.|\,)\d+)?$/" ng-change="convert_to_btc()" placeholder="USD" class="form-control ng-dirty ng-valid-parse ng-touched ng-invalid ng-invalid-pattern">
Run Code Online (Sandbox Code Playgroud) 我对^ [^ \ ./:* \?\“ <> \ |] {1} [^ \ /:* \?\” <> \ |] {0,254} $的正则表达式进行ng模式验证它基本上测试了文件路径和限制中的无效字符。但是当我将ng-pattern指定为
ng-pattern = "^[^\\\./:\*\?\"<>\|]{1}[^\\/:\*\?\"<>\|]{0,254}$"
Run Code Online (Sandbox Code Playgroud)
,ng模式会以不正确的方式显示正则表达式。正确实现此目标的任何帮助
我是Angular的新手,无法根据REGEX获取ng-pattern来验证电子邮件地址.实际上,电子邮件的其他默认角度验证也会更改行为,并且如果在插入ng-pattern时整个字段为空,则仅显示错误.最初尝试使用指令和控制器,但发现ng-pattern可以实现(理论上)验证电子邮件的相同效果,因此决定使用它.
我已经使用了几种REGEX模式并阅读了关于ng-pattern的内容,例如:来自ng-pattern 表单验证的正则表达式验证简单表单验证和许多其他链接但没有任何作用.任何人都可以弄清楚我需要做些什么才能让事情发挥作用?
<form name="userForm" novalidate>
<div class="row">
<div class="large-12 medium-12 small-12 columns">
<label>Username</label>
<input type="email" name="username" placeholder="johnsmith@ashburton.com" ng-model="user.username" ng-maxlength="100" ng-model-options="{ updateOn: blur }" ng-pattern = "/^(?("")("".+?(?<!\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'*\+/=\?\^`\{\}\|~\w])*)(???<=[0-9a-z])@))(?([)([(\d{1,3}\.){3}\d{1,3}])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-??z0-9][\-a-z0-9]{0,22}[a-z0-9]))$/" required />
<div class="error-container" ng-show="userForm.username.$dirty && userForm.username.$invalid">
<small class="error" ng-show="userForm.username.$error.required">
Your email is required.
</small>
<small class="error" ng-show="userForm.username.$error.email">
Please input a valid email.
</small>
<small class="error" ng-show="userForm.firstname.$error.maxlength">
Your email cannot be longer than 100 characters
</small>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud) 你怎么允许使用输入ng-pattern只:letters,numbers,dot,underscore和dash ( . _ -)?
已经尝试了以下几个
更新:
$scope.validationPattern = '/^[a-zA-Z\d\-\_]+$/';
<input ng-model="model" type="text" ng-pattern="{{validationPattern}}" />
Run Code Online (Sandbox Code Playgroud) 我试图在视图中使用ng-pattern来使用低于日期(mm/dd/yyyy)的验证模式.
ng-pattern="/^(\d{4})-(\d{2})-(\d{2})$/"
Run Code Online (Sandbox Code Playgroud)
一旦我开始输入日期,验证错误就会出现,并且在有效日期(例如10/15/1988)之后仍然存在
我尝试使用var传递它通过控制器(如下所示)但行为相同:
在控制器中:
$scope.myPattern = "/^(\d{4})-(\d{2})-(\d{2})$/";
Run Code Online (Sandbox Code Playgroud)
在视图中:
ng-pattern="{{myPattern}}"
Run Code Online (Sandbox Code Playgroud)
注意:这两种方法都不适用于IE9