2010-08-13 3 views
0

Le RegEx^([0-9]) + $ prend en charge les nombres et les espaces. Cependant, je veux qu'il supporte aussi les lignes vides. Comment?

Répondre

2

Utilisez ce lieu:

^([0-9])*$ 

ou, plus simplement:

^\d*$ 

\d signifie un chiffre (0 à 9). + signifie une ou plusieurs correspondances. * signifie zéro ou plusieurs correspondances.

+0

\ d est spécifique à Perl et ne fonctionnera pas si OP utilise par ex. grep –

+0

@Jonathon '\ d' est certainement * pas * spécifique à Perl. Je ne peux pas revendiquer la fonctionnalité universelle mais Perl seulement? Aucune chance. Java, C +, PHP et Python le permettent, juste au dessus de ma tête. – cletus

+0

comme le souligne Cletus, la plupart des langages de programmation utilisent une forme de notation perl pour les chiffres, les espaces, etc. L'équivalent dans les expressions rationnelles POSIX serait [[: digit:]] Je suppose. – wds

1

^([0-9])*$ Change + à *

Btw votre code ne supporte pas d'espaces pour ajouter des espaces regex devrait avoir [0-9 \ s]

1

Notez également que dans votre document original (et les recommandations ici), vous créez un groupe marqué du premier chiffre. Si vous voulez que le numéro entier dans la capture, vous avez besoin du + (ou *) à l'intérieur des Perens:

^([0-9]*)$ 

D'autre part, si vous n'avez pas besoin d'une capture, vous n'avez pas besoin Perens pas du tout:

^[0-9]*$ 
0

Par ligne vide, ne voulez-vous pas dire une ligne avec un retour chariot? Ne serait-ce pas simplement ^(\d*\s*\n)$?

Questions connexes