19

我想用破折号替换任何非字母数字字符序列。我写的一个片段如下。但是它不起作用,我完全不知道为什么。谁能解释一下为什么该片段的行为不像我期望的那样,以及实现此目的的正确方法是什么?

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
}
4

1 回答 1

33

正斜杠与您的字符串不匹配。

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
于 2012-12-02T19:52:29.640 回答