Ciao a tutti, tramite una chiamata AJAX ottengo dei dati in questo modo (ho accorciato la stringa per comodità):

codice:
{
  "frutta":[
    "Angurie - 3"
    "Angurie - 5"
    "Banane",
    "Kiwi",
    "Mele",
    "Meloni - 3",
    "Meloni - 4",
    "Meloni - 10",
    "Limoni"
  ]
}
Dovrei creare una cosa tipo questa:

codice:
<select>
  <optgroup label="Angurie">
    <option>Angurie - 3</option>
    <option>Angurie - 5</option>
  </optgroup>
  <option>Banane</option>
  <option>Kiwi</option>
  <option>Mele</option>
  <optgroup label="Meloni">
    <option>Meloni - 3</option>
    <option>Meloni - 4</option>
    <option>Meloni - 10</option>
  </optgroup>
  <option>Limoni</option>
</select>
In pratica se c'è un numero mi raggruppa le option con un optgroup
Ho creato questo script, ma non ottengo quello che voglio

codice:
$.each(data.frutta, function(i,value){
  if (/\d/.test(value)) {
    if($('optgroup').attr('label')==value) {
      cb='\n  <option>'+value+'</option>';
    } else {
      cb='\n<optgroup label="'+value.replace(/[^A-Za-z]+/g, '')+'">\n  <option>'+value+'</option></optgroup>';
    }
  } else {
    if($('optgroup').attr('label')==value) {
      cb='\n</optgroup>\n<option>'+value+'</option>';
    } else {
      cb='\n<option>'+value+'</option>';
    }
  }
  $('#fruttap').append(cb);
});
bensì questo:

codice:
<select>
  <optgroup label="Angurie">
    <option>Angurie - 3</option>
  </optgroup>
  <optgroup label="Angurie">
    <option>Angurie - 5</option>
  </optgroup>
  <option>Banane</option>
  <option>Kiwi</option>
  <option>Mele</option>
  <optgroup label="Meloni">
    <option>Meloni - 3</option>
  </optgroup>
  <optgroup label="Meloni">
    <option>Meloni - 4</option>
  </optgroup>
  <optgroup label="Meloni">
    <option>Meloni - 10</option>
  </optgroup>
  <option>Limoni</option>
</select>
Qualcuno sa come correggere?