Q:

can't submit a form on express/angular app

in my program there's a validation function on it, if there's an error it will prevent the form to submit and display error msg else it will console.log("Success") but my form cannot be submitted even without any error. is there anyway to enable status code 200 when there is no error ? because now the form prevent me to submit because of status code 400
express
function validateSignup(data,callback) {
        "use strict";
        var USER_RE = /^[a-zA-Z0-9_-]{2,25}$/;
        var PASS_RE = /^.{6,100}$/;
        var EMAIL_RE = /^[\S]+@[\S]+\.[\S]+$/;

        if (!USER_RE.test(data.publicUsername)) {
            callback(new Error('Invalid Public Username try just letters and numbers, e.g: Ed, 69, Kelvin and etc'), null);

        }
        if (!PASS_RE.test(data.password)) {
            callback(new Error('Password must be at least 6 characters long'), null);

        }
        if (data.password != data.confirmPassword) {
            callback(new Error('Password must match'), null);

        }
        if (!EMAIL_RE.test(data.email)) {
            callback(new Error('Invalid email address'), null);

            }
         if (data.email != data.confirmEmail) {
            callback(new Error('Email must match'), null);

        }
        return true;
    }

handlesignup
this.handleSignup = function(req, res, next) {
        "use strict";
    validateSignup(req.body, function(error, data) {
        if(error) {
            res.send(400, error.message);
        } else {
            console.log("success");
        }
    })
    }

Angular
function RegisterCtrl($scope, $http, $location) {
    $scope.form = {};
    $scope.errorMessage = '';
  $scope.submitPost = function() {
    $http.post('/register', $scope.form).
      success(function(data) {
        $location.path('/');
      }).error(function(err) {
        $scope.errorMessage = err;
      });
  };
}

A:

You have multiple issues in your code.

Your validateSignup function doesn't always call its callback. If the input passes the validation, it shouldn't return true but instead call its callback with no error and the data:
function validateSignup(data,callback) {
  // ...
  callback(null, data);
}

You don't always answer the client's request:
validateSignup(req.body, function(error, data) {
   if(error) {
       res.send(400, error.message);
   } else {
       console.log("success");
       res.send(200);
   }
})

Edit: As a side note, a callback should aways be called asynchronously (ie. using process.setImmediate, process.nextTick or setTimeout), but that isn't an issue in your specific case as the callback will always be called synchronously. As noted in Effective JS, item 67:

Never call an asynchronous callback synchronously, even if the data is immediately available.

That's why my advice is to always call callbacks asynchronously, which will free you from weird bugs later on. There are a number of reasons as why you shouldn't do it, but the most obvious is that you can easily blow the stack.
Here's how you you can defer the callback execution:
function validateSignup(data,callback) {
  // ...
  process.setImmediate(function() {
    callback(null, data);
  });
}

