diff --git a/components/number.inc b/components/number.inc
index 00bc7ab..5ba95ef 100644
--- a/components/number.inc
+++ b/components/number.inc
@@ -527,12 +527,17 @@ function _webform_csv_data_number($component, $export_options, $value) {
  *   None. Calls a form_set_error if the number is not valid.
  */
 function _webform_validate_number($element, &$form_state) {
+  $decimal = empty($element['#webform_component']['extra']['decimals']) ? 4 : $element['#webform_component']['extra']['decimals'];
+  $point = $element['#webform_component']['extra']['point'];
+  $separator = $element['#webform_component']['extra']['separator'];
+
+  $patern =  "/^[0-9][0-9" . $separator . "]+" . $point . "[0-9]{" .$decimal. "}$/";
   $value = trim($element['#value']);
   form_set_value($element, $value, $form_state);
 
   if ($value != '') {
     // Numeric test.
-    if (is_numeric($value)) {
+    if (preg_match($patern, $value)) {
       // Range test.
       if ($element['#min'] != '' && $element['#max'] != '') {
         // Flip minimum and maximum if needed.
@@ -578,7 +583,7 @@ function _webform_validate_number($element, &$form_state) {
       }
     }
     else {
-      form_error($element, t('%name field value of @value must be numeric.', array('%name' => $element['#title'], '@value' => $value)));
+      form_error($element, t('%name field value of @value must be in proper format.', array('%name' => $element['#title'], '@value' => $value)));
     }
   }
 
