簡體   English   中英

使用正則表達式和測試進行字符串比較

[英]string comparision using regex and test

兩個正則表達式的測試(E)時如何返回isValid = false

let arr =[A_MANAGER,B_MANAGER,C_MANAGER,A_EMPLOYEE,C_EMPLOYEE]

arr.map((item)=>{
let isValid = ( new RegExp("MANAGER").test(item) && !new RegExp("EMPLOYEE").test(item)) 
console.log(isValid)
})


問題陳述

let M= MANAGER, E=EMPLOYEE

M M = true
M E = true
E M = true
E E =false

一種方法是將輸入數組解析為兩個獨立的員工和經理數組。 然后,從所有人的集合開始,檢測一個人是否同時是經理和員工。

 var arr = ["A_MANAGER", "B_MANAGER", "C_MANAGER", "A_EMPLOYEE", "C_EMPLOYEE"]; var employees = []; var managers = []; var all = ["A", "B", "C"]; for (var i=0; i < arr.length; ++i) { if (/_MANAGER$/.test(arr[i])) { managers.push(arr[i].replace(/_.*$/, "")); } else { employees.push(arr[i].replace(/_.*$/, "")); } } for (var i=0; i < all.length; ++i) { if (managers.includes(all[i]) && employees.includes(all[i])) { console.log("Person " + all[i] + " is both a manager and an employee."); } else { var type = managers.includes(all[i]) ? "manager" : "employee"; console.log("Person " + all[i] + " is a " + type + " only."); } }

請注意,理想情況下,您還應該維護一個單獨的所有人列表/數組。

您可以簡單地使用正則表達式執行此操作,但也可以傳遞實際數組來比較值。 目前,您只是在兩次匹配當前項目,而不是當前和后續項目。

你可以做類似的事情

let arr =['A_MANAGER','B_MANAGER','C_MANAGER','A_EMPLOYEE','C_EMPLOYEE']
arr.map((total,key,arr)=>{
 if(arr[key+1] != undefined){
  return !(new RegExp(/EMPLOYEE/).test(total) && new RegExp(/EMPLOYEE/).test(arr[key+1]));
}
//Output : True,True,True,False

您可以在此處查看工作示例https://www.w3schools.com/code/tryit.asp?filename=GS103YAMF97P

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM