J'ai une zone de texte HTML où l'utilisateur insère des numéros de série numériques. Ceux-ci sont soit en ligne, séparés par n'importe quel caractère (y compris l'espace), soit en colonne provenant d'un fichier Excel.

Les codes de série peuvent avoir 14 caractères si le premier caractère est "1" sinon ils sont toujours de 15 caractères.

Ce que je voudrais réaliser, c'est une fonction jquery qui lit le contenu de cette zone de texte et génère lors de la soumission du formulaire, une table html avec chaque code série dans une nouvelle ligne tr d'une table.

Jusqu'à présent, j'ai essayé de diviser les codes soumis dans la colonne:

Exemple d'entrée:

12345678912345
12345678912346
12345678912345
223456789123455
623456789123457

$("#add_code").click(function(){
    var code = $("#code").val();

    for (line in code.split('\n')){
        $("#codes_list").append('<tr><td>'+code[line]+'</td></tr>');
    }
});

Merci d'avance!

0
Alex Crisafi 16 déc. 2011 à 20:36

3 réponses

Meilleure réponse

Donc, vous voulez juste vous séparer de tout non numérique?

code.split(/[^0-9]+/ig)
0
Mike Ruhlin 16 déc. 2011 à 16:58

Je ne vais pas écrire ceci pour vous mais ce que je peux vous dire, c'est que vous pouvez utiliser le modèle "[0-9] +" pour faire correspondre une séquence continue de nombres.

Un résultat regex javascript devrait permettre des correspondances multiples.

Voir des exemples ici http://www.regular-expressions.info/javascriptexample.html

1
Chris Moutray 16 déc. 2011 à 17:02
function parseSerialCodes(input) {
    var serialCodeRegExp = /(1\d{13}|\d{15})/g;

    var matches = [];
    var match = null;
    while((match = serialCodeRegExp.exec(input))) {
        matches.push(match[1]);
    }
}

$("#add_code").on("click", function () {
    var input = $("#code").val();
    var serialCodes = parseSerialCodes(input);

    var tableRows = serialCodes.map(function (code) {
        return "<tr><td>" + code + "</td></tr>";
    });
    var tableContents = tableRows.join("");

    $("#codes_list").append(tableContents);
});
0
Domenic 16 déc. 2011 à 16:59
8537216