2016-12-22 6 views
1

私はあまりにも正規表現に精通していない。私は<textarea id='area'>を持っていて、数字やカンマだけを入力したいと思っています。これは素晴らしいですjavascript - 行内に複数の同じ文字を使用できない

area.value=area.value.replace(/[^0-9,]/g,''); 

カンマと数字以外のものはすぐに削除されます。複数のカンマが連続して入力されないようにしたいと思います。たとえば、1、2、3をテキストエリアに入力または貼り付けた場合、1,2,3に変更されます。私はその作業を行うために正規表現に何を追加できますか? ありがとうございます。

+2

2つのreplace文を気にしない場合は、 '.replace(/、+/g、"、 ")' ...を1つの式で追加することができます。 – Gerrit0

答えて

1
area.value=area.value.replace(/[^0-9,]/g,''); 
area.value= area.value.replace(/,+/g,','); 

,+ここで一緒にlike ,, or ,,,

+1

NB:DOMプロパティに対して連続した読み取り/変更/書き込みサイクルを実行することは、一般的には良い考えではありません。 1つの読み込み(ローカル変数への読み込み)、2つの読み込み、1つの書き込みを行う方が良いでしょう。代わりに 'area.value = area.value.replace(...)。replace(...)'があります。 – Alnitak

1

を連続したカンマを意味し、単一のREPLACE文と選択肢です:

どのように動作
"1,,2,,a,3,4".replace(/[^\d,]|,(?=\D*,)/g, "") 

[^\d,]はその後[0-9,]私たちと同じですカンマに続けて0個以上の非一続き(\D)とdカンマ。 (?=は、肯定的なルックアヘッドグループを開始します。

関連する問題