我正在尝试验证字符串是否与特定格式匹配。如果失败,它应该抛出错误。 我正在尝试检查给定的字符串是否与所需的格式匹配。 我有一个数组,我正在检查字符串中是否存在数组内容,并检查它只能接受 {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();