js正則校驗特殊的不可見字符的具體實現
背景
表單的輸入框,用戶可能從Excel或者其他地方直接復制粘貼,這時候提交到后端會導致獲取的用戶輸入中包含一些特殊的不可見字符,比如tab鍵或者制表符等,這時需要在前端對用戶輸入做一些檢驗,檢查是否存在不可見字符。
方法
ASCII 編碼中第 0~31 個字符(開頭的 32 個字符)以及第 127
個字符(最后一個字符)都是不可見的(無法顯示),但是它們都具有一些特殊功能,所以稱為控制字符( Control
Character)或者功能碼(Function Code)。
ASCII 碼關鍵部分的信息如下圖:
注意這里 0~31 及127字符 是控制字符(不可見字符),我們可以在正則中通過校驗是否包含這些字符的16進制來判斷是否含有特殊字符。
關于這些控制字符的詳細含義可以參考:ASCII控制字符的解釋
完整的 ASCII 碼表:
校驗
在線正則校驗工具:正則表達式在線測試
一串簡單的測試文本:
ABC1823中文0456def$%#?. mMo
1. 校驗是否含有特殊的不可見字符
只要有一個不可見字符就會報錯
[\x00-\x1F\x7F]
注意這里是兩個0,采用 \x0-\x1F\x7F
這種格式是錯誤的,沒法進行正常的校驗。
2. 檢驗是否含有不可見字符
[^\x00-\x1F\x7F]+
注意這里 ^
的位置不要寫在外面,外面表示以什么開頭
代碼
import React,{useState} from "react"; import {Input,message} from "antd"; const RegTestInput = function(){ const testValue = (e) => { const { value } = e.target; if(value) { const reg = /[\x00-\x1f\x7f]/ if(reg.test(value)){ message.error("不允許包含特殊字符") } } } return ( <div> <Input onChange={testValue} /> </div> ) }
到此這篇關于js正則校驗特殊的不可見字符的文章就介紹到這了,更多相關js正則校驗不可見字符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript動態(tài)檢測密碼強度原理及實現方法詳解
這篇文章主要介紹了JavaScript動態(tài)檢測密碼強度原理及實現方法,結合具體實例形式詳細分析了javascript針對輸入字符串密碼強度檢測的原理與相關判斷操作技巧,需要的朋友可以參考下2019-06-06