需求:如何实现表单input控件可以为空,但是如果不为空时,调用正则进行验证?

时间:2021-12-12 20:26:53
var regexEnum = 
{

num1:"^([1-9]\\d*|0)$", //正数(正整数 + 0)

}

$("#circumscribeDate").formValidator({
onfocus:"请输入1-30之间的数字!"
}).inputValidator({
type:"number",
min:1,
max:30,
onerror:"请输入1-30之间的数字!"
}).regexValidator({regexp:"num1",datatype:"enum",onerror:"办理限制日期的格式不正确"});

需求:如何实现表单input控件可以为空,但是如果不为空时,调用正则进行验证?

12 个解决方案

#1


min:0,  试试

#2


function check(money){
var patrn=/^[1-9]\d*$/;
if(money==''){
return true;
}
if (!patrn.exec(money)){
return false;
}
return true;
}

#3


引用 1 楼 zhongxingxuan 的回复:
min:0,  试试


没用。

#4


引用 2 楼 shoth 的回复:
function check(money){
var patrn=/^[1-9]\d*$/;
if(money==''){
return true;
}
if (!patrn.exec(money)){
return false;
}
return true;
}



最好不要重新写js实现。用formvalidator 内部实现。

#5


<script>
var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
document.write(arr[i].replace(" ","&nbsp;")+":"+p.test(arr[i])+"<br/>");
   }
</script>

#6


^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)

后面的那个 $ 表示以这些结尾, 一定要有这几个数字, 

num1:"^[1-9]\d*|0|$",
再把min改成0试试

#7


引用 5 楼 p2227 的回复:
HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ","&amp;nbsp;")+":"+p.test(arr[i])+"<br/>");
   }
</script>……


input 可以不用输入,也就是为空。
但是,如果用户输入了数据,就要调用正则验证。
关键怎么实现 为空是不验证,而且可以正常提交。 不为空时 就调用正则验证?

#8


这样子,你把所有验证都集成在regexValidator里面吧,要不然你就查查你手上的formValidator的API啰

<script>
var p = /^(|[0-9]|[1-2][0-9]|30)$/; //验证0-30
   var arr=["","123","0"]
   

vandw = function(str){
document.write(str + "\t\t:"+p.test(str)+"<br/>");

}
vandw('');

for (var i=0;i<=31 ;i++ )
{
vandw(i.toString());
}


</script>

#9


不知输入空格,算不算为空?

#10


引用 7 楼 iamaj2eeprogrammer 的回复:
引用 5 楼 p2227 的回复:

HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ","&amp;amp;nbsp;")+":"+p.test(arr……
是这样子的,jquery关于表单验证的控件太多了,重名的也很多,即使你给了名字,我也不能确保我搜索到的插件API跟你手头上的一样,你直接看源代码一般会有作者主页,上去查吧。

#11


引用 10 楼 p2227 的回复:
引用 7 楼 iamaj2eeprogrammer 的回复:

引用 5 楼 p2227 的回复:

HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ……



我们用的是 formValidator.js formValidatorRegex.js。

#12


没想到问题解决的办法是如此的简单。
在input 加上属性 allownull="true"。
多谢楼上几位。

#1


min:0,  试试

#2


function check(money){
var patrn=/^[1-9]\d*$/;
if(money==''){
return true;
}
if (!patrn.exec(money)){
return false;
}
return true;
}

#3


引用 1 楼 zhongxingxuan 的回复:
min:0,  试试


没用。

#4


引用 2 楼 shoth 的回复:
function check(money){
var patrn=/^[1-9]\d*$/;
if(money==''){
return true;
}
if (!patrn.exec(money)){
return false;
}
return true;
}



最好不要重新写js实现。用formvalidator 内部实现。

#5


<script>
var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
document.write(arr[i].replace(" ","&nbsp;")+":"+p.test(arr[i])+"<br/>");
   }
</script>

#6


^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)

后面的那个 $ 表示以这些结尾, 一定要有这几个数字, 

num1:"^[1-9]\d*|0|$",
再把min改成0试试

#7


引用 5 楼 p2227 的回复:
HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ","&amp;nbsp;")+":"+p.test(arr[i])+"<br/>");
   }
</script>……


input 可以不用输入,也就是为空。
但是,如果用户输入了数据,就要调用正则验证。
关键怎么实现 为空是不验证,而且可以正常提交。 不为空时 就调用正则验证?

#8


这样子,你把所有验证都集成在regexValidator里面吧,要不然你就查查你手上的formValidator的API啰

<script>
var p = /^(|[0-9]|[1-2][0-9]|30)$/; //验证0-30
   var arr=["","123","0"]
   

vandw = function(str){
document.write(str + "\t\t:"+p.test(str)+"<br/>");

}
vandw('');

for (var i=0;i<=31 ;i++ )
{
vandw(i.toString());
}


</script>

#9


不知输入空格,算不算为空?

#10


引用 7 楼 iamaj2eeprogrammer 的回复:
引用 5 楼 p2227 的回复:

HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ","&amp;amp;nbsp;")+":"+p.test(arr……
是这样子的,jquery关于表单验证的控件太多了,重名的也很多,即使你给了名字,我也不能确保我搜索到的插件API跟你手头上的一样,你直接看源代码一般会有作者主页,上去查吧。

#11


引用 10 楼 p2227 的回复:
引用 7 楼 iamaj2eeprogrammer 的回复:

引用 5 楼 p2227 的回复:

HTML code
<script>
    var p = /^(|\d+)$/;
   var arr=["","123","0"]
   for(var i=0;i<arr.length;i++){
    document.write(arr[i].replace(" ……



我们用的是 formValidator.js formValidatorRegex.js。

#12


没想到问题解决的办法是如此的简单。
在input 加上属性 allownull="true"。
多谢楼上几位。