【发布时间】:2019-01-15 06:53:30
【问题描述】:
我有一个名字和姓氏的正则表达式。即使我根据正则表达式给出正确的输入,它也会失败。我尝试更改不同的正则表达式,但仍然失败。对于测试,我什至使用了唯一的数字正则表达式,但仍然失败。下面是我正在使用的代码。
<form id="register_form" action="{{url('/register')}}" method="post" accept-charset="UTF-8">
<div class="col-sm-6">
<div class="form-group">
<label for="name">Name</label>
<input type="text" id="first_name" class="form-control" placeholder="Enter Name" name="first_name">
</div>
</div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/additional-methods.js"></script>
<script type="text/javascript">
$.validator.addMethod(
"regex",
function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"Number Not valid."
);
$("#register_form").validate({
rules: {
first_name: {required:true, minlength:2, regex:"^[a-zA-Z]+((\\s|\\-)[a-zA-Z]+)?$"},
},
messages: {
first_name:{required:'First name is required',minlength:'First name should contain atleast two alphabets',regex:'Only alphabets allowed and it should not start with space.'},
}
);
</script>
我失败的输入是 Raj Shah,这应该可以正常工作。我检查了重复的输入 ID,但没有。我在那里检查了在线测试仪上的正则表达式,它工作正常。
【问题讨论】:
-
在可以避免的情况下尽量不要使用
new RegExp- 请改用正则表达式文字,这样您就不必双重转义`\`。 -
您拥有的第一个正则表达式字符串将匹配
"First""First Last"和"First-Last"- 也许您错误地使用了validator.addMethod -
无法复制。
re.test('Raj Shah');->true这不是正则表达式。 -
我的猜测是
regexp参数可能没有正确传递 - 一个最小、完整和可验证的示例会有所帮助 -
in
regex:"^[a-zA-Z]+((\\s|\\-)[a-zA-Z]+)?$"...regex:键是什么意思?请尝试显示更多有意义代码以获得更多有意义帮助
标签: javascript jquery regex