我为纬度输入(在-90和90之间,并且排除了特殊字符(e,+,-等))创建了以下验证器。我已经测试过正则表达式,并且可以正常工作。但是,当我在输入上使用它时,它只会验证数字范围并允许使用特殊字符(例如'12e')。
function validateLatCoordFactory(): ValidatorFn {
return (formControl: AbstractControl) => {
if(!formControl.value) return;
let LAT_COORD_REGEXP = new RegExp(/^(\\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$/);
return LAT_COORD_REGEXP.test(formControl.value) ? null : {
validLatCoord: {
valid: false
}
};
};
}
@Directive({
selector: '[validLatCoord][ngModel],[validLatCoord][formControl]',
providers: [
{provide: NG_VALIDATORS, useExisting: forwardRef(() => LatCoordValidatorDirective), multi: true}
]
})
export class LatCoordValidatorDirective implements Validator {
validator: ValidatorFn;
constructor() {
this.validator = validateLatCoordFactory();
}
validate(formControl: AbstractControl) {
return this.validator(formControl);
}
}
任何帮助将不胜感激。 BT7
答案 0 :(得分:0)
如果您想检查该值是否在-90到90之间(包括-90和90),那么您不应该首先使用正则表达式。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section style="width:100%; height:auto; visibility:hidden;">
<div class="section_menu_mada_page_row_container" style="">
<span class="section_menu_mada_page_row_name" style="">' + item.name + '</span>
<span class="section_menu_mada_page_row_half" style="">' + item.half + '</span>
<span class="section_menu_mada_page_row_full" style="">' + item.full + '</span>
</div>
</section>
这将检查3件事: