我如何在我的方法中添加断言条件?

问题描述 投票:-1回答:1

我在这里有了此方法,可以让我管理字符串的验证。

    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]*,我想添加一个检测以显示错误消息。

实际上,我们的大多数用户都在犯此错误。

我认为我可以使用反向断言,但不能使其与我的方法一起使用。

你能帮我吗?

javascript regex angular assertion
1个回答
0
投票

从代码中不清楚什么是错误,什么不是错误。这是一个可以执行两项检查的功能,也许可行。

尽管有这个答案,我仍然敦促您说服您的企业提高应用程序的可用性。

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; }
© www.soinside.com 2019 - 2024. All rights reserved.