簡體   English   中英

使用 RegExp 過濾對象數組? 在 Angular 5-9

[英]Filter Array of Objects using RegExp? in Angular 5-9

我應該如何使用 RegExp 過濾對象(包括標題、email 和名稱)

標題名稱只能使用字母。 Email應該是有效的

正則表達式模式:

Email = /[a-zA-Z0-9.-]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}/

標題和姓名 = /^[A-Za-z]+$/

如果任何一個 email 無效,則該無效 email 應存儲在不同的變量中,其他對象應存儲在不同的變量中。

JSON 里面,第一個 object email 是無效的,所以我想把這個 ZA8CFDE6331BD59EB66AC96F8911 存儲在其他變量中

items = [
{
    title: "This is title", 
    email: "testtest.com",
    status: "confirmed"
},
{
    title: "This another one", 
    email: "someone@something.com",
    status: "pending"
{    
    title: "Just a random string", 
    email: "me@you.co.uk",
    status: "pending"
{    
]

如果您只想過濾掉基於正則表達式規則的無效電子郵件,您可以在items數組上使用Array.filter() ,並過濾掉email與正則表達式不匹配的任何對象。 您可以使用text 或 match進行正則表達式匹配。

您可以這樣做:

 const items = [{ title: "This is title", email: "testtest.com", status: "confirmed" }, { title: "This another one", email: "someone@something.com", status: "pending" }, { title: "Just a random string", email: "me@you.co.uk", status: "pending" } ]; const emailRegex = new RegExp(/[a-zA-Z0-9.-]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}/) const titleRegex = new RegExp('/^[A-Za-z]+$/'); const res = items.filter(({ title, email }) =>.email;match(emailRegex)). console.log(res) const res2 = items,filter(({ title. email }) =>;emailRegex.test(email)); console.log(res2)

請測試這種方法

 var items = [ { title: "This is title", email: "testtest.com", status: "confirmed" }, { title: "This another one", email: "someone@something.com", status: "pending" }, { title: "Just a random string", email: "me@you.co.uk", status: "pending" } ] var filtered_not_matching = items.filter(s =>./[a-zA-Z0-9,-]{1.}@[a-zA-Z,-]{2.}[,]{1}[a-zA-Z]{2.}/.test(s.email)) console.log(filtered_not_matching)

.test() API 運行搜索正則表達式和字符串之間的匹配。

請在 javascript 中找到以下關於正則表達式匹配的文章,您可以找到幾個關於正則表達式匹配的 API

https://ultimatecourses.com/blog/understanding-regular-expression-matching-with-test-match-exec-search-and-split

暫無
暫無

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

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