1

ユーザーがコンテンツを保存する前に「バージョン名」を提供する場合、正規表現を使用して「不正な」文字をテストします。使用できる文字は、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」は「MyV​​ersion」になるのですか?これは、ユーザーが「My Version」と入力した場合には発生しません。

そのため、選択ボックスから取得した値には、スペースのように見えるがそうではない文字が含まれているようです。この値をテキスト ボックスから Unicode コンバーター ( http://rishida.net/tools/conversion/ )にコピーしました。これは値の基になる文字を識別し、両方のセットが 0020 (スペース) として報告されますが、1 つだけが例外をスローします。 ??

この問題を引き起こしているキャラクターを特定する方法はありますか?

どんな考えでも大歓迎です!

乾杯

マーク

4

2 に答える 2

2

試す:

var str= getSelectBoxValue();
var rez = ""; 
for (var i=0;i<str.length;i++) 
    rez = rez+str[i]+"["+str.charCodeAt(i)+"]"; 

alert(rez);

文字列内のすべての文字の Unicode 値を、Javascript が認識する方法で提供する必要があります。画面からコピーすると、何らかの理由で奇妙な UTF 文字を通常の「0x20」文字に変換するブラウザ/OS である可能性があります。

于 2013-04-17T10:15:58.410 に答える