1

ユーザーが特殊文字をフィールドに入力できないようにする次の JavaScript がありますが、例外を作成してダッシュ (-) を許可したいと考えています。

function Validate(txt)
{
    txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');
}

ダッシュを許可リストに追加するように変更するにはどうすればよいですか?

4

4 に答える 4

5

ダッシュ ( ) を許可するには、 this:を this:-に変更するだけです。txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, '');

ダッシュは、角括弧で囲まれた場合 (範囲を示す) 特殊文字であるため、角括弧内の最後に配置する必要があることに注意してください。

@Tim Pietzckerのコメントに従って、エスケープするtxt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r\-]+/g, '');か、先頭に置くこともできますtxt.value = txt.value.replace(/[^-a-zA-Z 0-9\n\r]+/g, '');

于 2012-08-06T13:23:29.880 に答える
3

文字クラスの最後に (最後の文字として) ダッシュを追加します。

txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, '');
于 2012-08-06T13:22:26.870 に答える
1

これを試してください: [^a-zA-Z 0-9\n\r-]+

正規表現テストのクールなサイト

于 2012-08-06T13:25:54.873 に答える
1
txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r-]+/g, ''); 

ダッシュが最後にない場合は、これを試すこともできます

[^a-zA-Z 0-9\n\-\r]+ //I only test this on rubular

テスト

于 2012-08-06T13:27:23.647 に答える