这是我尝试过的小提琴:
脚本
$(".controlButton").click(function() {
var SHPname = $(this).closest('.row').find('.fname').val();
var textfieldmask = /^\s*-?[1-9]\d*(\.\d{1,2})?\s*$/;
/// check full name
if (SHPname.length > 0){
var testname = textfieldmask.test(SHPname);
alert (testname);
if (testname == true ){
var tstnm = "ok";
alert (tstnm);
} else {
alert ("Enter digits up to 2 decimal places!");
$('#fname').focus();
return false;
}
} else {
alert ("Please enter price");
$('#fname').focus();
return true;
}
});
的HTML
<div class="row">
<label class="required" for="name" title="Enter your name"><input type="text" id="fname" class="fname" name="fname" />Price</label>
<label for="formsubmit" class="nocontent"><a class="controlButton" href="#" class="progress-button"><p id="BTNtxt">Save</p></a>
</div>
</label>
但这并不适用我想要的规则:请帮助我修改此规则,使其与下面的规则匹配:
规则:仅允许数字(最多4位数字)到小数点后2位
规则:仅允许数字(最多4位数字)到小数点后2位
但是,您当前的正则表达式也有另一个限制:整数部分不能以零开头。
因此,您可以使用
/^\s*-?[1-9][0-9]{0,3}(?:\.[0-9]{1,2})?\s*$/
^^^^^^^^^^
正则表达式演示(此处,整数部分的第一个数字可以在1到9的范围内,其后可以有0到3个其他数字。)
此表达式的整数部分至少需要一位数字!(它不容许-.55
)
或者
/^\s*-?(?!0)[0-9]{0,4}(?:\.[0-9]{1,2})?\s*$/
^^^^^^^^^^^^^^^
正则表达式演示(此处,整数部分可以包含4位数字,但第一个数字不能0
归因于负前瞻(?!0)
)。
该表达式在整数部分不需要至少1位数字!(允许-.55
)
查看更新的小提琴
由于环顾四周会使regex模式的效率降低(可以使用PCRE
或Python
设置在regex101.com中测试这两种模式,因此可以看出这一点),我将选择第一个regex。但是,根据您的进一步要求,您可以选择第二种模式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句