首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

輸入驗證:貼上空白字元與鍵盤空格的差異處理

     編輯:程式設計綜合問答

表單驗證常需攔截空白字元。開發者發現正則 /^\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 模式正確運作(現代瀏覽器支援)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved