我在这里有了此方法,可以让我管理字符串的验证。
checkStringValidation(data, controlName){
const prefieldsList = /\*\[([^\]]+)\]\*/g;
const matchExistingfield = /\*\[(email|firstname|lastname)\]\*/i
const la_fieldList = data.match(prefieldsList);
let flag = true;
this.la_errorArray[controlName] = new Array();
if(la_fieldList != null){
la_fieldList.forEach(field => {
console.log('field:', field);
if(field.match(matchExistingfield) === null) {
/*each field in Error*/
console.log('field en erreur: ', field);
this.la_errorArray[controlName] += field + ', ';
// errors[controlName] = [];
// errors[controlName].push(field);
flag = false;
}
});
}
return flag;
}
此方法使用2个正则表达式:
1)const prefieldsList = /*[([^]]+)]*/g;
这样我就可以捕捉到*[]*
2)const matchExistingfield = /*[(email|firstname|lastname)]*/i
这样我就可以验证*[]*
之间的内容是电子邮件,名字还是姓氏。
如果用户输入[firstname]
,而不是例如*[firstname]*
,我想添加一个检测以显示错误消息。
实际上,我们的大多数用户都在犯此错误。
我认为我可以使用反向断言,但不能使其与我的方法一起使用。
你能帮我吗?
从代码中不清楚什么是错误,什么不是错误。这是一个可以执行两项检查的功能,也许可行。
尽管有这个答案,我仍然敦促您说服您的企业提高应用程序的可用性。
console.log(checkStringValidity("*[email]"));
console.log(checkStringValidity("*[lastname]*"));
function checkStringValidity(str) {
const isBracketError = !(str.startsWith("*[") && str.endsWith("]*"));
const valuesMatched = !isBracketError &&
str.slice(2,-2).match(/^email|firstname|lastname$/i) || [];
return { isBracketError, valuesMatched };
}
.as-console-wrapper { top: 0; max-height: 100% !important; }