2010-11-19 3 views

Répondre

2
/^1\d{8}/ 

Le premier numéro 1 sera votre premier chiffre, de sorte que le quantificateur doit être 8.

+0

vous voulez rescan votre motif? Quel est le '8' à la fin? – tchrist

+0

@tchrist Oups - typo épique! – alex

1

Si vous avez besoin 9 les numéros commençant par un alors il vous suffit de limiter la répétition de la classe de caractères à huit (8):

"/^1[0-9]{8}$/" 

Dans votre exemple vous avez « \ ». Si vous devez autoriser des espaces, utilisez un espace ou \s pour les espaces: [0-9 ] ou [0-9\s].

+0

grand! Merci :) – Zac

+1

Ahmad, techniquement vous ne "limitez pas la classe de caractères", vous limitez plutôt sa * répétition *. Limiter la classe de caractères à 8 ressemblerait à '[0-8]' ou même '[8]'. ;-) –

+0

@Mike mis à jour pour plus de clarté, merci! –

1
^(?=1)\d{9}$⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ ⁠ 
+0

Je me demandais simplement s'il y avait un avantage à avoir un lookbehind positif plutôt que de le faire correspondre (c'est-à-dire, si votre regex ne vous concerne pas)? – alex

+0

+1 pour l'affirmation positive, bien que n'étant pas une norme, il est bon de trouver des utilisations pratiques pour eux. – elmt

+0

Le principal avantage est qu'il indique dans le code ce que je pense qu'il a été demandé: 9 chiffres, le premier étant un 1. De cette façon, vous n'avez pas à faire des calculs supplémentaires. Il y a un problème lié aux chiffres non-ASCII, mais je doute que cela va venir avec votre ensemble de données. Là encore, je me trompe souvent, alors peut-être que vous devriez faire attention à ne recevoir que des données ASCII. – tchrist

Questions connexes