jsは特殊な不可視文字を定期的にチェックします

バックグラウンド

フォームの入力ボックスでは、ユーザーは Excel などから直接コピーして貼り付けることができますが、このときバックエンドに送信すると、取得されたユーザー入力にタブ キーやタブ文字などの特殊な目に見えない文字が含まれることになります。フロントエンドはユーザー入力に対していくつかのチェックを行い、非表示の文字が存在するかどうかを確認します。

方法


ASCIIコードの0~31番目の文字(最初の32文字)と127番目の文字(最後の文字)は目に見えない(表示できない)のですが、これらはすべて何らかの特別な機能を持っているため、制御文字( Control Character )と呼ばれます
。またはファンクションコード(ファンクションコード)。

ASCIIコードのキー部分の情報は以下のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

なお、ここでの0 ~ 31 と 127 の文字は制御文字 (不可視文字) であり、規則パターン内の16 進文字が含まれているかどうかを確認することで、特殊文字が含まれているかどうかを判断できます。

これらの制御文字の詳しい意味については、「ASCII 制御文字の解釈」を参照してください。

完全な ASCII コード表:
ここに画像の説明を挿入

チェック

オンライン定期チェックツール:ルーキーツール - 正規表現オンラインテスト

テスト テキストの単純な文字列:

ABC1823中文0456def$%#?.			mMo

1. 特殊な非表示文字があるかどうかを確認します。
非表示文字がある限り、エラーが報告されます。

[\x00-\x1F\x7F]

ただし、0が2つあるため、\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>
	)
}

おすすめ

転載: blog.csdn.net/Charonmomo/article/details/130862041