Замена регулярного выражения Golang не делает ничего - программирование
Подтвердить что ты не робот

Замена регулярного выражения Golang не делает ничего

Я хочу заменить любые символы без алфавитно-цифрового символа тире. Ниже приведен фрагмент того, что я написал. Однако это не работает, и я совершенно не знаю, почему. Может ли кто-нибудь объяснить мне, почему этот отрывок ведет себя не так, как я ожидаю, и что будет правильным способом для этого?

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func main() {
    reg, _ := regexp.Compile("/[^A-Za-z0-9]+/")
    safe := reg.ReplaceAllString("a*-+fe5v9034,j*.AE6", "-")
    safe = strings.ToLower(strings.Trim(safe, "-"))
    fmt.Println(safe)  // Output: a*-+fe5v9034,j*.ae6
}
4b9b3361

Ответ 1

Прямые косые черты не соответствуют вашей строке.

package main

import (
        "fmt"
        "log"
        "regexp"
        "strings"
)

func main() {
        reg, err := regexp.Compile("[^A-Za-z0-9]+")
        if err != nil {
                log.Fatal(err)
        }

        safe := reg.ReplaceAllString("a*-+fe5v9034,j*.AE6", "-")
        safe = strings.ToLower(strings.Trim(safe, "-"))
        fmt.Println(safe)   // Output: a*-+fe5v9034,j*.ae6
}

(Также здесь)

Выход

a-fe5v9034-j-ae6