2010-01-15 16 views

Odpowiedz

13
(\+|-)?([0-9]+(\.[0-9]+)) 

 

+0

Zastąp drugi znak + znakiem *, aby dopasować również rzeczy typu ".4" (przypisane do notatek w błędna odpowiedź poniżej). –

+1

Dla każdego, kto używa tego do sprawdzania poprawności w polach tekstowych tylko liczbowych, jeśli obsługuje go mechanizm wyrażeń regularnych, można zawrzeć wyrażenie za pomocą kotwicy początkowej i końcowej, na przykład '^ (\ + | -)? ([0-9] + (\. [0-9] +)) $ '. – kevin628

+0

@ kevin628 Pamiętaj, że niektóre silniki wyrażeń regularnych muszą mieć włączoną flagę, aby używać tych początkowych i końcowych zakotwiczeń. Wiem na przykład, że wyrażenia regularne Java potrzebują (? M) na początku, aby użyć symboli '^' i '$'. – Rossiar

3

Spróbuj tego:

[+-]?\d+\.\d+ 
+0

Należy zauważyć, że nie rozpoznaje to wzorców takich jak ".4" (bez wiodącego zera) lub "10" (bez separatora dziesiętnego). Ale biorąc pod uwagę niejasność "pytania", nie mam pojęcia, czy to problem, czy nie. – BlairHippo

+0

yeah; ponieważ OP powiedział "dziesiętny", myślę, że przecinek dziesiętny jest obowiązkowy, ale nie jestem również pewny, że opcjonalna liczba całkowita –

+1

Cóż, jeśli pójdziemy z obowiązkowym przecinkiem dziesiętnym, może zawsze zrobić to jako "[+ -]? \ d * \. \ d + ". Obsługuje opcjonalny prowadzący 0, przynajmniej. – BlairHippo

7

Try This! Używałem też w ten sposób

"^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$" 

zasady:

ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$ 
^   # Start of string 
[0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999) 
(?:   # Try to match... 
\.   # a decimal point 
[0-9]{1,4} # followed by one to three digits (i. e. 0-9999) 
)?   # ...optionally 
$   # End of string 
1
+ (BOOL)isStringADecimalNumber:(NSString *)string 
{ 
    NSString *regex = @"([+]|-)?(([0-9]+[.]?[0-9]*)|([0-9]*[.]?[0-9]+))"; 

    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 

    BOOL stringIsADecimalNumber = [test evaluateWithObject:string]; 

    return stringIsADecimalNumber; 
} 

przedstawiono poniżej, to numery, które zwracają TRUE tego regex: enter image description here enter image description here