亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查一個字符串是否連續包含 2 個相同的字符?

如何檢查一個字符串是否連續包含 2 個相同的字符?

Go
慕標5832272 2023-03-07 16:46:04
我有這樣的正則表達式REGEX_2_SAME_CHARACTER_IN_A_ROW = "^(?:(.)(?!\\1\\1))*$"并使用該正則表達式檢查密碼是否連續包含 2 個相同的字符contain2SameCharacterInARow, err := regexp.MatchString(REGEX_2_SAME_CHARACTER_IN_A_ROW, password)但我得到這個錯誤error match regex 2 same char in a row: error parsing regexp: invalid or unsupported Perl syntax: `(?!`我讀過其他使用 regexp.MustCompile 的問題,但我不知道如何處理或編碼,有沒有人可以幫助我解決這個問題?在這里您可以查看我的完整代碼以驗證密碼 https://play.golang.com/p/5Fj4-UPvL8s
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

您不需要錨點、非捕獲組或負面前瞻。只需匹配并捕獲任何字符 ( (.)) 后跟自身 ( \\1)。

REGEX_2_SAME_CHARACTER_IN_A_ROW = "(.)\\1"

但這給我們帶來了下一個問題:Go regexes do not support back references,所以你需要找到一個不同的解決方案。一個是自己循環字符串。

這是一個簡單循環的解決方案:

package main


import (

    "errors"

    "fmt"

    "strings"

)


func main() {

    fmt.Println(ValidatePassword("passsword01"))

}


func ContainsRepeatedChar(s string) bool {

    chars := strings.Split(s, "")

    char := chars[0]

    for i := 1; i < len(chars); i++ {

        if (chars[i] == char) {

            return true

        }

        char = chars[i]

    }

    return false

}


func ValidatePassword(password string) error {

    contain2SameCharacterInARow := ContainsRepeatedChar(password)

    if contain2SameCharacterInARow {

        fmt.Println("duplicated char")

        return errors.New("invalid password")

    }


    fmt.Println("all good")

    return nil

}


查看完整回答
反對 回復 2023-03-07
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號