テキスト フィールドの長さを可変文字数に制限する必要があります。CJK 表意文字を 2 文字としてカウントする必要があるため、変数と呼んでいます。たとえば、長さを 10 に制限している場合、10 文字のラテン文字を使用できますが、表意文字は 5 つしかないか、ラテン文字が 4 文字と CJK 文字が 3 文字 (4 + (3*2)) になります。
以下を使用して、これをC#で十分に実装しました。
if (char.GetUnicodeCategory(str, i) == UnicodeCategory.OtherLetter)
問題は、これがフォーム投稿でチェックされていたことです。私が本当に望んでいるのは、ユーザーが入力しているときにチェックする JavaScript 実装を用意することです。正規表現を使用して各文字を確認できますが、UnicodeCategory.OtherLetter が使用する Unicode ブロック範囲を見つけることができません。
このサイトは、正規表現をまとめるのに非常に役立つようですが、C# 実装の動作に一致するために探しているものを知る必要があります。