簡體   English   中英

如何驗證名稱中的每個第一個字母都是大寫字母?

[英]How do I validate that each first letter in a name is in capital letters?

我有一個用戶輸入她/他的名字和姓氏的輸入。 我需要驗證名字和第二個名字是否都以大寫字母開頭。 還需要處理兩個以上的名字。

我在我的驗證對象中嘗試過這個。 我意識到我在映射時為每個元素得到了一個 if,不知道如何正確地寫這個。

 nameCheck(value){
        let name = value.split(" ");
        name?.map(element => {
        if(name?.length > 0 && element[0] === element[0].toUpperCase()){
            return true
        }
        else{
            return false

            }
         }
        )
    }

我這樣稱呼它:

const isValidName = validate.nameCheck(form.creator)
   console.log(isValidName)

這里 isValidName 最終未定義。 我所有的其他驗證檢查都是簡單的 if 語句,效果很好。

知道如何解決這個問題嗎?

您沒有從方法nameCheck返回任何內容; 但是您在這里使用的是map ,如果您返回map返回的值,那么它將返回一個布爾值數組。

 const validate = { nameCheck(value) { let name = value.split(" "); return name?.map((element) => { // change, Added return keyword if (name?.length > 0 && element[0] === element[0].toUpperCase()) { return true; } else { return false; } }); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);

我不認為你想return an array 您只想return a Boolean value來說明名稱是否有效。

所以,你可以使用every在這里為:

 const validate = { nameCheck(value) { return value.split(" ").every((s) => s[0].toUpperCase() === s[0]); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);

暫無
暫無

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

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