表單驗證常需攔截空白字元。開發者發現正則 /^\s+|\s+$/g 能偵測鍵盤輸入的空格,卻無法攔截從外部貼上含特殊空白字元(如全形空格 U+3000、零寬空格 U+200B 等)的字串。
鍵盤輸入通常產生基本拉丁字母空格 (U+0020),而複製貼上可能帶入各種 Unicode 空白字元。\s 僅匹配 [ \t\r\n\v\f],不包含全形空格等。
擴充正則以涵蓋常見 Unicode 空白字元:
/^[\s\u3000\u200B\u200C\u200D\uFEFF]+|[\s\u3000\u200B\u200C\u200D\uFEFF]+$/g
或直接移除所有 Unicode 空白字元:
str.replace(/[\s\u3000\u200B-\u200D\uFEFF]/g, '')
input 事件即時清理。u 旗標確保 Unicode 模式正確運作(現代瀏覽器支援)。