Mình có 1 cái regex như thế này:
/^[^_`~!@#$%^&*()\-_+={}[\]|\\:;"'<>.?/]+$/gi
Mình kiểm tra trên trang này (https://www.regextester.com/27540) với dữ liệu là
Hoang Minh, Nha Trang
Thì nó khớp. Nhưng đưa vào jquery để bắt lỗi input những kí tự lạ thì nó lại không khớp
Đây là đoạn code của mình trong source:
checkValidate("#street", /^[^_`~!@#$%^&*()\-_+={}[\]|\\:;"'<>.?/]+$/gi, ".form-group", ".street", "Bạn đang nhập kí tự lạ! Vui lòng nhập lại!", true);
function checkValidate(element_check, regex, parent_closest, element_error, text_error1, check_empty){
$(element_check).focusout(function(){
var pattern = regex;
var value = $(this).val();
if(check_empty == false){
if(!pattern.test(value) && value != "") {
$(this).closest(parent_closest).find(element_error).attr("style", "display:block");
$(this).closest(parent_closest).find(element_error).text(text_error1);
}
else{
$(this).closest(parent_closest).find(element_error).attr('style', 'display: none');
}
}
else{
if(value == ''){
$(this).closest(parent_closest).find(element_error).attr("style", "display: block;");
$(this).closest(parent_closest).find(element_error).text("Bạn vui lòng nhập dữ liệu vào trường này");
}
else{
var preName = /^[^_`~!@#$%^&*()\-_+={}[\]|\\:;"'<,>.?/]+$/gi;
if(!preName.test(value)) {
$(this).closest(parent_closest).find(element_error).attr("style", "display: block");
$(this).closest(parent_closest).find(element_error).text(text_error1);
}
else{
$(this).closest(parent_closest).find(element_error).attr('style', 'display: none');
}
}
}
});
}
Kết quả: Khi nhập dữ liệu Hoang Minh, Nha Trang thì nó ra như sau:
Tại sao vậy các bác?