regex 所有非字母更改为下划线的正则表达式保持固定第一个字母#不变

mu0hgdu0  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(135)

我用这个正则表达式来改变所有的符号或任何非数字字符,以下划线剩余的第一个#值。

text.replace(/(?!^)[^\p{L}\p{N}]+/gu, '_');

这将正常工作,但对于孟加拉字母,当用户输入চার时,它会像这样打印:চ__া_র
请提供正确的正则表达式。

htrmnn0y

htrmnn0y1#

第二个字符(\u09BE)是09BE孟加拉元音符号AA,属于“标记,空格组合”Unicode类别(Mc)。
这意味着,您需要向求反字符类添加一个变音符号Unicode类别类:

/(?!^)[^\p{L}\p{N}\p{M}]+/gu

查看JavaScript演示:

console.log("চার".replace(/(?!^)[^\p{L}\p{N}\p{M}]+/gu, '_'))

相关问题