我正在尝试从字符串中过滤汉字。
根据这个答案的说法,我可以:
const nonChinese = /[^\p{Script=Han}]/gimu;
const text = "asdP asfasf这些年asfagg 我开源的 几个小项目sad asd";
console.log(text.replace(nonChinese, ""));预期产出:
"这些年我开源的几个小项目"这可以在js:js小提琴操场这样的在线编译器中工作,但是它不适用于我的NextJs (带有类型脚本)应用程序,它会给我一个编译错误:
Error: Failed to recognize value `Han` for property `Script`.引发此错误的原因如下:
index.js?46cb:365 Uncaught at getUnicodePropertyValueSet (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:315:46438)
at getUnicodePropertyEscapeSet (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:315:46885)
at processCharacterClass (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:315:47864)
at processTerm (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:315:48494)
at rewritePattern (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:315:50577)
at PluginPass.RegExpLiteral (file://D:\code\personal-website\node_modules\next\dist\compiled\babel-packages\packages-bundle.js:74:17966)
at i (file://D:\code\personal-website\node_modules\next\dist\compiled\babel\bundle.js:1890:373015)
at NodePath._call (file://D:\code\personal-website\node_modules\next\dist\compiled\babel\bundle.js:1890:292626)
at NodePath.call (file://D:\code\personal-website\node_modules\next\dist\compiled\babel\bundle.js:1890:292450)
at NodePath.visit (file://D:\code\personal-website\node_modules\next\dist\compiled\babel\bundle.js:1890:293401)
at processResult (file://D:\code\personal-website\node_modules\next\dist\compiled\webpack\bundle5.js:49593:19)
at <unknown> (file://D:\code\personal-website\node_modules\next\dist\compiled\webpack\bundle5.js:49695:5)
at <unknown> (file://D:\code\personal-website\node_modules\next\dist\compiled\webpack\bundle5.js:140993:11)
at <unknown> (file://D:\code\personal-website\node_modules\next\dist\compiled\webpack\bundle5.js:140845:18)
at context.callback (file://D:\code\personal-website\node_modules\next\dist\compiled\webpack\bundle5.js:140718:13)
at <unknown> (file://D:\code\personal-website\node_modules\next\dist\build\babel\loader\index.js:33:61)我能知道为什么会发生这种事,以及如何解决吗?
发布于 2022-07-18 00:07:41
嗯,不知道为什么,但在我把正则表达式改为:
const nonChinese = /[\P{Script=Han}]/gim它只是起作用了,如果有人仍然面临这个问题,而你只有ASCII和汉字,你可以使用一个替代方案,过滤掉所有的ASCII字符。
const allAscii = /[\x00-\x7F]/gimhttps://stackoverflow.com/questions/73012580
复制相似问题