Javascript regex validate phonenumber

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Javascript regex validate phonenumber

    Hi zusammen,

    Ich habe im Formular ein Feld für die Telefonnummer, diese muss aber formatiert übergeben werden (international).

    Hierfür habe ich versucht eine regex zu schreiben, aber wirklich gelingen will es mir nicht.

    Hier mein Codeschnipsel:

    Quellcode

    1. function checktelnum() {
    2. with(document.changeform.fdest) {
    3. if(!value.length) {
    4. alert('Bitte eine Telefonnummer eingeben')
    5. focus()
    6. return false
    7. }
    8. var m = value.match(/[^49]/)
    9. if(m) {
    10. alert('Fehler: Bitte geben Sie eine Telefonnummer im internationalen Format ein. z.B.: 4989999098528')
    11. focus()
    12. return false
    13. }
    14. }
    15. return true;
    16. }
    Alles anzeigen


    Es funktioniert zumindestens das eine 49 am Anfang stehen muss, aber im Moment geht es eben NUR wenn man 49 eintippt, wenn man anschließend die Nummer dahinter eingibt bringt er mir den alert :(

    Das geht:
    49
    Das geht nicht:
    4989123456789

    Ich habe es bereits mit [1-9]* versucht, auch diverse andere, aber irgendwie funktioniert es nicht.

    Weiß hier jemand weiter?

    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RealFairPlayer ()

  • Also erst einmal: Java != JavaScript.
    Des weiteren würde ich es eher so schreiben:

    Quellcode

    1. var m = value.match("/^49/")

    Begründung: Ich bin zwar kein JS-Regex-Guru, allerdings hätte ich deien Ausdruck so interpretiert, dass kein Zeichen der Menge 4 und 9 vorkommen darf. Aber ich denke, dass du das ^ dazu verwenden willst, den Anfang zu deklarieren. Dafür müsste das ^ vor der eckigen Klammer stehen. Dann gibst du mit [...] eine Menge an Buchstaben/Ziffern an, die auf den Ausdruck passen, was in deinem Fall aber sinnlos ist. Ich würde die eckigen Klammern weglassen und dafür 49 schreiben. Somit bestimmst du, dass am Anfang der Nummer in der Reihenfolge erst eine 4 und dann eine 9 stehen muss.

    Weiterhin besteht eine Rufnummer ja nicht nur aus der Ländervorwahl. Deswegen musst du ja auch noch irgendwie angeben, dass noch weitere, beliebig viele Zahlen folgen können:

    Quellcode

    1. var m = value.match("/^49\d+/")

    \d passt auf jede beliebige Ziffer und + besagt, dass das vorige (Meta-)Zeichen beliebig oft vorkommen darf, aber mindestens einmal.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Hallo Deadman(Metrax?)

    jepp, Java != Javascript // Mein Fehler, sorry.

    Ich habe deinen Lösungsansatz im Laufe des Nachmittages auch versucht, allerdings komme ich mit dieser ex dann egal mit was durch... also auch buchstaben, und es muss keine 49 am Anfang stehen, scheint für mich so als wäre die Syntax ungültig und wird ignoriert.

    Hier meine Versuche:

    Quellcode

    1. function checktelnum() {
    2. with(document.changeform.fdest) {
    3. if(!value.length) {
    4. alert('Bitte eine Telefonnummer eingeben')
    5. focus()
    6. return false
    7. }
    8. //var m = value.match(/[^49]/)
    9. var m = value.match("/^49\d+/")
    10. if(m) {
    11. alert('Fehler: Bitte geben Sie eine Telefonnummer im internationalen Format ein. z.B.: 4989999098528')
    12. focus()
    13. return false
    14. }
    15. }
    16. return true;
    17. }
    Alles anzeigen


    Ergebnis: Egal was ich eingebe ins Formular ob asd oder 123 - es geht durch


    Quellcode

    1. function checktelnum() {
    2. with(document.changeform.fdest) {
    3. if(!value.length) {
    4. alert('Bitte eine Telefonnummer eingeben')
    5. focus()
    6. return false
    7. }
    8. //var m = value.match(/[^49]/)
    9. var m = value.match(/^49\d+/)
    10. if(m) {
    11. alert('Fehler: Bitte geben Sie eine Telefonnummer im internationalen Format ein. z.B.: 4989999098528')
    12. focus()
    13. return false
    14. }
    15. }
    16. return true;
    17. }
    Alles anzeigen


    Ergebnis: Egal was ich eingebe ins Formular ob asd oder 123 - es geht durch

    Weitere Vorschläge, ich beiss mir daran wirklich die Zähne aus... :(
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Mir ist ein kleiner Fehler unterlaufen. Der Regex kommt icht in " und ".

    Quellcode

    1. var m = value.match(/^49\d+/)

    Des weiteren läuft gibt dein Skript einen alert aus, wenn sich etwas in m befindet, was im Falle eines Matches ein Array ist. Deswegen solltest du if lieber so schreiben:

    Quellcode

    1. if(m == nukk) {
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.