2016-08-08 1 views
0

Je veux écrire une expression régulière où il devrait permettre une seule valeur après le point décimal. Celui que je l'ai écrit est:En ce qui concerne le RegEX

(N\/A)(n\/a)|\d+.?\d{0,1} 

Il est d'accepter les valeurs par mon exigence, mais le problème est qu'il accepte également 1. - à savoir, si je ne donne pas la valeur après la virgule aussi accepte.

+0

Vous pouvez utiliser '\ d +' je suppose. – Wickramaranga

+0

Merci beaucoup, cela fonctionne très bien. –

+0

@Wickramaranga vous devez vous échapper '.' '\ d + (\. \ d)?' sinon il acceptera tout caractère, par ex. '123a4'. De plus, vous capturez maintenant la première décimale, peu importe le nombre. J'ai ajouté une modification suggérée pour ne faire correspondre que des nombres à un seul chiffre. – Skogsv

Répondre

0

En plus de @ réponse de Wickramaranga qui extrait le premier chiffre après la virgule décimale si vous souhaitez correspondre uniquement sur les chiffres que vous pouvez utiliser lookarounds:

(?<!\.)\b\d+(?:\.(\d))?\b(?!\.) 

Cela va extraire le premier chiffre (non compris le point) ainsi que de s'assurer que le numéro n'a qu'un seul chiffre.

Notez que cela inclut également n'importe quel nombre sans décimales.

Pour exiger qu'il y ait un et un seul chiffre: (. \ D)?

(?<!\.)\b\d+\.(\d)\b(?!\.)