使用正则表达式验证字符串

时间:2020-12-19 03:41:03

标签: javascript jquery angular regex

我正在尝试验证字符串是否与特定格式匹配。如果失败,它应该抛出错误。 我正在尝试检查给定的字符串是否与所需的格式匹配。 我有一个数组,我正在检查字符串中是否存在数组内容,并检查它只能接受 {or}、{and}。

示例:- var arrayList = ['a','b','c','d','e']; 我有一个包含 a,b,c,d,e 的数组。所以输入的格式应该是 var Input = "a{or}b{and}c{and}d{or}e".so 输入应该是这种格式(即我可以将 {or},{and} 放在数组中的内容之间)。 我已经实现到这里。但我也应该允许在它们之间接受 '(', ')' 字符。即 (a{or}b{and}){or}(c{and}d{or}e)。 如何使正则表达式允许现有输入字符串之间存在 '(' , ')'

任何人都可以请告诉我如何实现它。

     
function validateInput(){
       let InLevelTableList = ['tab1', '33', 'list'];
     let InlevelParentLogic = "(tab1{and}list){and}33"
    try{
      if(InLevelTableList.length > 1){
            console.log(InLevelTableList)
            let regex = '';
            let arrayVar = '';
            for (let ind = 0; ind < InLevelTableList.length; ind ++) {
              if (ind === InLevelTableList.length-1) {
                arrayVar = arrayVar + InLevelTableList[ind] + ')\\b';
              } else if (ind === 0) {
                arrayVar = '\\b('+InLevelTableList[ind] +'|';
              } else {
                arrayVar = arrayVar + InLevelTableList[ind] +'|';
              }
            }
            for (let ind = 0; ind < InLevelTableList.length; ind ++) {
              if (ind === InLevelTableList.length-1) {
                regex = regex + arrayVar+')*$';
              } else if (ind === 0) {
                regex = '^('+arrayVar+'({or}|{and})';
              } else {
                regex = regex + arrayVar + '({or}|{and})';
              }
            }
            let regexType = new RegExp(regex);
            console.log(regexType);
            let Invalidate = InlevelParentLogic.match(regex)
            if(!Invalidate){
              console.error('Invalid Logic');
              return;
            }
          }



    }catch(err){
      console.log(err)
    }
  }

validateInput();

























































































    

0 个答案:

没有答案
相关问题