を働いていないダッシュを強制的に:123456-12-1234
:正規表現は、私は次のように番号をフォーマットしようとしてる
$('.telnumber').keyup(function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
foo = foo.match(new RegExp('.{1,4}$|.{1,2}$|.{1,6}', 'g')).join("-");
$(this).val(foo);
});
私が期待するように動作していないですが - 私はちょうど6のチャンクを取得します:http://jsfiddle.net/juspC/892/
私は間違って何をしていますか?
詳細情報を提供できますか?サンプル入力とは何か、期待される出力は何ですか?あなたは「力ダッシュ」と言いますが、私が最初にすることはダッシュを取り除くことです。混乱します。 – dman2306
@ dman2306 - 123456121234と入力すると、私は '123456-12-1234'を期待しています。 JSFiddleは私が今見ていることを示しています。キーアップを再評価できるように、ダッシュを削除します。 – SB2055
なぜなら、 '|'は常にオプションの中で最長と一致するからです。なぜ正規表現を使うのですか?単純な 'substring'のようなものが私にはこれを非常に簡単に処理すると思われます。最初の6文字、次の2文字、次の4文字を拾います。また、FYIとして、あなたは数字を強制する何もしていないので、*&^&* $#^&* $ ^#&*^$#は機能し、誰かがペーストしたり、テキストをドラッグしたりすると、フィールドに入る。 – dman2306