2010-09-02 9 views
1

J'ai par exemple: (111) 222-3333 - Verizon ... Je veux quand je sélectionne cette remplir dans deux zone de texte. La première zone de texte ayant (111) 222-333 et dans la deuxième zone de texte avec Verizon. Est-ce possbile avec jquery?comment diviser/enlever les caractères indésirables

Répondre

1

Sons comme le travail pour un regular expression:

var text = "(111) 222-3333 - Verizon"; 
var regexp = /(\(\d{3}\)\s\d{3}-\d{4}) - ([A-Za-z ]+)/; 

result = regexp.exec(text); 
if (result) { 
    alert('Number: ' + result[1] + '\nCarrier: ' + result[2]); 
} 
else { 
    alert('No match'); 
} 

Un peu de recherche devrait se présenter une expression régulière plus robustes pour correspondre à des numéros de téléphone.

De même, vous pouvez utiliser jQuery pour vous aider à déplacer les valeurs de résultat, par exemple, $('#number_text_box').text(result[1]);, mais l'expression régulière est une chose javascript, elle ne dépend pas de jQuery.


Mise à jour: cette expression ajoute groupes de capture, () autour de chaque partie du nombre.

var regexp = /\((\d{3})\)\s(\d{3})-(\d{4}) - ([A-Za-z ]+)/; 

Vous pouvez ensuite coller les chiffres ainsi:

var number = result[1] + result[2] + result[3]; 
var carrier = result[4]; 

Un bon endroit pour expérimenter est dans le navigateur lui-même - dans la console de Firebug ou Webkit, vous pouvez exécuter javascript comme ceci directement pour le tester .

+0

@ Seth - hey, votre suggestion est géniale. Au lieu de retourner (111) 222-3333, qu'en est-il juste 1112223333? – hersh

+0

Pour ce faire, ajoutez d'autres groupes de capture, puis joignez-les ensemble - voir Modifier. – Seth

0

Pouvez-vous décrire cela un peu plus? Quel est le séparateur ici? Si c'est un '-' alors vous pouvez le faire dans JS natif en utilisant instr. Si la réponse est all() et que les nombres sont autorisés dans le champ 1 et que tout est passé à la case deux, alors regardez les expressions régulières pour faire la séparation où les nombres se terminent.

modifier

il est possible, mais vous êtes l'analyse syntaxique du texte et qui est jamais agréable. Que diriez-vous de mettre le nombre dans un attribut et le transporteur dans un autre attribut et quand vous sélectionnez l'élément, sortez-le en utilisant la commande attr de jquery?

+0

@ Griegs - eh bien, j'ai un selectlistbox, avec les numéros de téléphone et les transporteurs. Ce que je voudrais faire, c'est quand je sélectionne l'un des numéros avec transporteur, je voudrais que la première zone de texte affiche juste le numéro de téléphone et la deuxième zone de texte pour montrer seulement le transporteur. Est-ce possible avec Jquery? Si oui, comment pourrais-je résoudre cela? – hersh

1

deux façons de le faire, que ce soit vous pouvez utiliser

var str="(111) 222-3333 - Verizo" 
var result=str.split(" - "); 
//var result[0] and result[1] 

si vous voulez être plus précise à valeur variable que vous pouvez utiliser un jquery plugin agréable dans jquery créé par James Padolsey qui permet regex à utiliser pour la sélection.

Supposons que vous avez la div suivante:

<div class="asdf"> 
Padolsey's :regex filter can select it like so: 

$("div:regex(class, .*sd.*)") 

check documentation on selectors.

Questions connexes