Golang正则表达式替换无效。

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
}

5
请使用regexp.MustCompile代替忽略错误:http://golang.org/pkg/regexp/#MustCompile。 - Nick Craig-Wood
5
这只是一个例子。当程序出现错误时,我通常会表达很多关爱。 - karka91
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接