function validInteger(theNumber){
var anyNonDigits = new RegExp('\D','g');
if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
return true;
}else{
return false;
}
}
Powyższa funkcja jest funkcją napisaną w celu sprawdzenia poprawności niektórych danych wejściowych. Chcę wszystkie liczby całkowite dodatnie. Problem z którym stoję jest związany z obiektem RegExp. Wygląda na to, że powinno być super proste, ale z jakiegoś powodu nie działa.Używanie wyrażenia regularnego do sprawdzenia, czy dane wejściowe mają w nim wpisane cyfry niebędące cyframi
Na przykład, jeśli przekażę "f5", otrzymam prawdę, ale jeśli przekażę "5f", otrzymam fałsz. Mam również problemy z przekazywaniem liczb ujemnych. -3 nie zostanie złapany, nawet jeśli zmienię łańcuch przed przekazaniem go do RegExp. Mogę to naprawić, dodając "&&parseInt(theNumber)>0
" w mojej instrukcji if, ale mam wrażenie, że RegExp również to powinno złapać. Z góry dziękuję!
Wyrażenie regularne nie działa, ponieważ trzeba uciec od znaku '\ ', ponieważ' \ 'ma również znaczenie w notacji literowej ciąg. 'nowy RegExp ('\\ D', 'g');' –
... również nie musiałbyś używać modyfikatora 'g', ponieważ brzmi to tak, jakby nawet jedna cyfra mogła wystarczyć do oznaczenia wkład. –
@amnotiam dzięki za informację, dlaczego to, co robiłem, nie działa. Wyrażenia regularne są czymś, do czego wciąż jestem nowy. Mam nadzieję, że wkrótce to zmienię. –