私のJavaScriptは非常に錆びているので、これに関するどんな助けも素晴らしいでしょう。非印刷文字(SOH、BSなどの制御文字)および文字列内のasなどの拡張ASCII文字を検出して削除する必要がありますが、コードの書き方がわかりませんか?
誰も私にこれを行う方法の正しい方向を示すことができますか?これは私がこれまでに持っているものです:
$(document).ready(function() {
$('.jsTextArea').blur(function() {
var pattern = /[^\000-\031]+/gi;
var val = $(this).val();
if (pattern.test(val)) {
for (var i = 0; i < val.length; i++) {
var res = val.charAt([i]);
alert("Character " + [i] + " " + res);
}
}
else {
alert("It failed");
}
});
});
印刷可能な基本ASCII範囲の一部ではない文字をターゲットにするには、この単純な正規表現を使用できます。
[^ -~]+
説明: ASCIIテーブル の最初の128文字では、印刷可能な範囲はスペース文字で始まり、チルダで終わります。これらはあなたが保持したいキャラクターです。その範囲は[ -~]
で表され、その範囲にない文字は[^ -~]
で表されます。これらは私たちが置き換えたいものです。したがって:
result = string.replace(/[^ -~]+/g, "");
テストする必要はありません。テキストボックスのコンテンツを直接処理できます。
textBoxContent = textBoxContent.replace(/[^\x20-\x7E]+/g, '');
ここで、範囲\x20-\x7E
は、asciiテーブルの印刷可能な部分をカバーします。
コードの例:
$('.jsTextArea').blur(function() {
this.value = this.value.replace(/[^\x20-\x7E]+/g, '');
});
(文字列ではなく)パターンをisNonAscii
変数に割り当ててから、test()
を使用して一致するかどうかを確認する必要があります。 test()
はtrueまたはfalseを返します。
$(document).ready(function() {
$('.jsTextArea').blur(function() {
var pattern = /[^\000-\031]+/gi;
var val = $(this).val();
if (pattern.test(val)) {
alert("It matched");
}
else {
alert("It did NOT match");
}
});
});
チェック jsFiddle