替换所有单词中除第一个字母之外的所有字母

Trt*_*rts 1 javascript regex

var substitute_with = "_";\nconst regex = /\\B\\w/g;\n\nvar result = text.replaceAll(regex, substitute_with);\n
Run Code Online (Sandbox Code Playgroud)\n

此代码将所有字母替换为下划线,除了所有单词中的第一个字母。

\n

这对于英语来说效果很好,但我需要对英语和西里尔语也有同样的效果。

\n

例子:

\n
\n

\xd0\xad\xd1\x82\xd0\xbe \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82-"\xd1\x80\xd1\x8b\xd0\xb1\xd0\xb0 ", \xd1\x87\xd0\xb0\xd1\x81\xd1\x82\xd0\xbe \xd0\xb8\xd1\x81\xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7 \xd1\x83\xd0\xb5\xd0\xbc\xd1\x8b\xd0\xb9 \xd0\xb2 \xd0\xbf\xd0\xb5\xd1\x87\xd0\xb0\xd1\x82\xd0\xb8 \xd0 \xb8\xd0\xb2\xd1\x8d\xd0\xb1-\xd0\xb4\xd0\xb8\xd0\xb7\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb5。

\n
\n

在线正则表达式: https: //regex101.com/r/scjHae/1

\n

接下来我可以尝试什么?

\n

tri*_*cot 5

您可以使用Unicode 属性转义(带有u标志),而不是\\B使用后置断言:

\n

\r\n
\r\n
const result = "They all shouted \xd0\xa1\xd0\xbb\xd0\xb0\xd0\xb2\xd0\xb0 \xd0\xa3\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x96!".replaceAll(/(?<=\\p{L})\\p{L}/gu, "_");\nconsole.log(result);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n