iT邦幫忙

0

C# 難字/造字 驗證問題

  • 分享至 

  • xImage

目前遇到一個問題是 "㚬" 這個字在我驗證的方法裡會被視為特殊字元
是用 \u4e00-\u9fa5 來驗證,如果要將難字 㚬...之類的 通過漢字驗證 該如何解決呢?
目前使用 \u4e00-\u9fa5 可以輸入漢字 , 可是遇到難字 就會不管用了

if (!Regex.IsMatch(user.name, @"^[\u4e00-\u9fa5a-zA-Z\s]+$"))
            {
                輸入的字元中包含特殊字元
                只接受中/英 文字元
                ...
                return View();
            }
看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2022-05-23 12:48:56 檢舉
「如果要將難字 㚬...之類的 該如何解決呢?」
這句話要不要修改一下?
看不出你想做什麼
是要將它當作允許輸入的字還是不允許的?
已修改
因為用 ^[\u4e00-\u9fa5a-zA-Z\s]+$ 正規式表達 雖然可以驗證輸入 漢字 ,可是遇到 難字 "㚬" \u4e00-\u9fa5 會變的不管用
froce iT邦大師 1 級 ‧ 2022-05-23 14:19:15 檢舉
https://zh.wiktionary.org/wiki/%E3%9A%AC
㚬 是\u36ac,不在你的範圍內。

https://unicode-table.com/en/
2E80~2FD5、3400~4DB5、4E00~9FA5
這三段都是漢字
淺水員 iT邦大師 6 級 ‧ 2022-05-23 16:05:23 檢舉
unicode 超過 0xffff 還有
例如化學元素的 Db 的中文「金木土」
unicode 是 0x289C0
froce iT邦大師 1 級 ‧ 2022-05-24 09:01:20 檢舉
感謝補充,4E00開始那段後面我就懶得去翻了。
感謝兩位大大的協助
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2022-12-21 03:22:18

您可以使用 Unicode 中定義的所有漢字字元範圍。

您可以使用 \u2E80-\u2EFF、\u3400-\u4DBF、\u4E00-\u9FFF、\uF900-\uFAFF 和 \u20000-\u2A6DF 五個範圍來涵蓋所有漢字字元。

您可以將這些範圍添加到您的正則表達式中,例如:

if (!Regex.IsMatch(user.name, @"^[\u2E80-\u2EFF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\u20000-\u2A6DFa-zA-Z\s]+$"))
{
    輸入的字元中包含特殊字元
    只接受中/英 文字元
    ...
    return View();
}

這樣就可以確保您的驗證會接受所有漢字字元,包括難字。

我要發表回答

立即登入回答