regex - 如何替换任何语言的所有非字母数字?

标签 regex go

在 golang 中使用正则表达式,我想用 - 替换任何语言的所有非字母数字字符,以制作漂亮的 url:

Here是我尝试过的众多正则表达式之一:

主要包

import (
    "fmt"
    "regexp"
)

const sample = `سلام دنیا hello world 1 %^&`

func main() {
    var re = regexp.MustCompile(`~[\p{L}0-9\s]+`)
    s := re.ReplaceAllString(sample, `-`)
    fmt.Println(s)
} 

输出应该是: سلام-دنیا-hello-world-1

但它不起作用。我该如何解决?

最佳答案

为什么开头要用~?如果要 se 否定集,请在括号内使用 ^:[^...]。此外,如果您想替换空格,请不要在否定集定义中包含 \s:

[^\p{L}0-9]+

Demo

关于regex - 如何替换任何语言的所有非字母数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57159355/

相关文章:

Java - 匹配字符串中的特定URL

go - 为什么当我在main中打印指向函数中声明的变量的取消引用的指针时,它不打印垃圾内存?

image - 如何发送jpeg.Encode图片?

go - 为什么我在通过 channel 接收值时看不到输出

json.Marshal(struct) 返回 "{}"

regex - 如何在 sed 中保留其他捕获组的同时对捕获组进行后处理?

regex - groovy 正则表达式修饰符...添加注释

python - 正则表达式重命名文件夹 Métamorphose

regex - 在正则表达式中,匹配字符串末尾或特定字符

go - 是否可以使 net.http.ServeMux 匹配整个子树?