var substitute_with = "_";\nconst regex = /\\B\\w/g;\n\nvar result = text.replaceAll(regex, substitute_with);\nRun Code Online (Sandbox Code Playgroud)\n此代码将所有字母替换为下划线,除了所有单词中的第一个字母。
\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
在线正则表达式: https: //regex101.com/r/scjHae/1
\n接下来我可以尝试什么?
\n您可以使用Unicode 属性转义(带有u标志),而不是\\B使用后置断言:
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