user3518669
user3518669

Reputation: 33

Regex is not a function

I'm trying to create a simple validation method with jQuery, but without a plugin. So I made this code:

(function ($) {
  $.fn.validate = function () {
    var emailRegex = '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';
    var error = false;
    if ($('#vorname').val() == "") {
      $('#vorname').after('<span class="error">Name fehlt</span>');
      error = "true";
    }
    if ($('#nachname').val() == "") {
      $('#nachname').after('<span class="error">Name fehlt</span>');
      error = "true";
    }
    if ($('#email').val() == "") {
      $('#email').after('<span class="error">Email fehlt</span>');
      error = "true";
    } else if (!emailRegex.test($('#email').val())) {
      $('#email').after('<span class="error">Keine gültige Email</span>');
      error = "true";
    }
    if (error == true) {
      return false;
    } else {
      return;
      true;
    }
  }
})(jQuery);

$(document).ready(function () {
  $('#button').click(function () {
    $('#button').validate();
  });
});

But I'm getting always the message that my regex test isn't a function. What's the issue?

Upvotes: 2

Views: 1376

Answers (2)

ojdo
ojdo

Reputation: 8900

You write:

var emailRegex = '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';

You might want to write:

var emailRegex = new RegExp('^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$');
// or simpler
var emailRegex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;

Upvotes: 3

Kei Minagawa
Kei Minagawa

Reputation: 4521

Your emailRegex is defined as String. Define it as regexp like this.

emailRegex = /hogehoge/

Upvotes: 1

Related Questions