telefoonnummer formaat met jQuery & regex

ik moet elk ingangsniveau verifiëren en converteren naar telefoonnummerindeling, d.w.z.

input er+f375g25123435s67 i need to convert into +375 25 1234567

..

keyup: function(){
newval = $(this).val().replace(/(\D+|\+)/g, '');
newval = newval.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$& ');
$(this).val(newval);
}

..

dit is een andere code, ik moet hem aanpassen ..

3

3 antwoord

Niet-telefoongerelateerde tekens verwijderen:

var phone = "er+f375g25123435s67";
phone = phone.replace(/[^+|\d]/g, ""); //result = "+3752512343567"

Vervolgens om het telefoonpatroon te matchen:

if (phone.match(/^[+][0-9]{12}$/))//or /^[+][0-9]{13}$/ for 13 digits
    ...

EDIT: Here's what I was able to come up with for the test & replace:

phone = $(this).val().replace(/^[^+]{1}/, '');
if (phone.length > 1)
    phone = phone.substring(0,1) + phone.substring(1).replace(/[^\d]/g, '');
if (phone.match(/^[+][\d]{12}$/))
    phone = phone.substring(0,4) + " " + phone.substring(4,6) + " " + phone.substring(6,14);

Located here: http://jsfiddle.net/cabbott/KaYeJ/

2
toegevoegd
Uw voorbeeldstring heeft het resultaat van een "+" en 13 cijfers, terwijl uw geldige string 12 cijfers heeft. Ik weet niet zeker wat het juiste aantal cijfers is.
toegevoegd de auteur CAbbott, de bron
Ik heb dat in je jsfiddle opgemerkt. proberen te zien of ik een patroon kan bedenken om daarmee te werken.
toegevoegd de auteur CAbbott, de bron
Ik heb mijn antwoord bijgewerkt en gekoppeld in een nieuwe jsfiddle-URL.
toegevoegd de auteur CAbbott, de bron
het eerste deel van de code werkt, maar de tweede werkt niet .. jsfiddle.net/jhzy9
toegevoegd de auteur drdarwin, de bron
ik sta 12 cijfers toe, een plus en 2 spaties ..
toegevoegd de auteur drdarwin, de bron
lieve CAbbott, maar ik hoef het patroon van de telefoon niet te evenaren, ik moet het op vlieg transformeren (binnen de invoer) .. - zoiets als dit jsfiddle.net/sXGLB (de code is bijna voltooid)
toegevoegd de auteur drdarwin, de bron
druk op een Vork-knop en geef me een nieuwe URL
toegevoegd de auteur drdarwin, de bron
$('input').live({   
    keyup: function() {           
        var ipt = $(this).val().replace(/[^\d]*/g, "");//remove non-digits

        ipt = ipt.replace(/(\d{1,3})(\d{1,2})?(\d{1,7})?.*/g, '+$1 $2 $3');

        $(this).val(ipt);       
    }
});

Fiddle om te testen

2
toegevoegd
Ik heb mijn antwoord bijgewerkt met een werkende, inclusief een regex om onderweg te formatteren, controleer dit nu alstublieft
toegevoegd de auteur Yuri Ghensev, de bron
nog steeds niet .. ( jsfiddle.net/sXGLB
toegevoegd de auteur drdarwin, de bron
hoe coderen ipt = "+" + ipt.substring (0, 3) + "" + ipt.substring (4, 6) + "" + ipt.substring (7) in reguliere expressie?
toegevoegd de auteur drdarwin, de bron

Je kunt dit proberen:

// dit verwijdert niet-numeriek

keyup: function() {

     

var phone = $ (this) .val (). replace (/ \ D/g, '');
     var myRegexp =/(\ d {3}) (\ d {3}) (\ d *)/g

     

var match = myRegexp.exec (telefoon);      $ (this) .val ('+' + match [1] + '' + match [2] + '' + match [3]);

 }
 

$ 1 $ 2 en $ 3 zouden 375 25 1234567 moeten zijn

Comment : sorry didn't know you wanted a full answer with the code. http://jsfiddle.net/UcJeV/4/

2
toegevoegd
helaas werkt deze code niet ( jsfiddle.net/cYk4q ) omdat hier een fout is (\ D + | +)
toegevoegd de auteur drdarwin, de bron