ユーザーがコンテンツを保存する前に「バージョン名」を提供する場合、正規表現を使用して「不正な」文字をテストします。使用できる文字は、A ~ Z、0 ~ 9、および空白スペースです。以下を使用してこれをテストします。
var version_name = document.getElementById('txtSaveVersionName').value;
if(version_name.search(/[^A-Za-z0-9\s]/)!= -1){
alert("Warning illegal characters have been removed etc");
version_name.replace(/[^A-Za-z0-9\s]/g,'');
document.getElementById('txtSaveVersionName').value = version_name;
}
これは、ユーザーがバージョン名をキー入力した場合にうまく機能します。ただし、バージョン名は、動的に入力された選択ボックスから取得したデータ (システムからロードされたバージョン名) から入力することもできます。
これが発生すると、正規表現は名前のスペースを破棄します。「My Version」は「MyVersion」になるのですか?これは、ユーザーが「My Version」と入力した場合には発生しません。
そのため、選択ボックスから取得した値には、スペースのように見えるがそうではない文字が含まれているようです。この値をテキスト ボックスから Unicode コンバーター ( http://rishida.net/tools/conversion/ )にコピーしました。これは値の基になる文字を識別し、両方のセットが 0020 (スペース) として報告されますが、1 つだけが例外をスローします。 ??
この問題を引き起こしているキャラクターを特定する方法はありますか?
どんな考えでも大歓迎です!
乾杯
マーク