Hi Jquery Guros,
I develop registeration form (in arabic).
I added "validator.addMethod" to check the firstname text.
I want to check that the "firstname" text must be in INGLISH leters OR Numbers(means, user can't insert arabic leters or anything else).

I added the script:
///////// chack firstname (English leter OR numbers)

return this.optional(element) || /^[a-zA-Z0-9._-]{3,16}$/i.test(value);
},"Username are 3-15 characters");


You can check the script at:

Can anybody help me guys?

Thanks a lot.

But dosn't work

8 Years
Discussion Span
Last Post by fxm

You need to escape the . and -

return this.optional(element) || /^[a-zA-Z0-9\._\-]{3,16}$/i.test(value);

Edited by pritaeas: n/a


Thanks pritaeas for your replay.
Unfortunately, not workong, I still can type arabic letters in the firstname box, No error alert (in red) dispalyed on the screen that tell me to use just ENGLISH letter OR numbers.

Any aideas?

Thanks again.


What does this.optional(element) do ? If this returns true, then the regex is not validated, because of the || (or).


You need to escape the . and -

That is not correct. Those characters are used as themselves in that character class.


That is not correct. Those characters are used as themselves in that character class.

My bad, you're right.


Both pages
apply the minLength rule, so your code is not completely broken.

The page that actually tests the characters
has charset=iso-8859-1 Your page
has charset=utf-8 I'm fairly sure that difference affects regexp evaluation (especially with the .i flag).

At the moment www.alnaddy.com is down from here, so can't explore this matter further right now.

Edited by fxm: n/a


Caution: I only started reading about jquery when you posted this question.

However, I have an idea. I think the field must have a rule for your method [which I have renamed 'getNick']. I am assuming that this.optional(element) will return false [because the field is marked required: true]. If there is any doubt I would leave that out of the return [because as I understand your form this field cannot be optional].

My suggested fix adds what I think is the proper way to reference your function in the ruleset for firstname. If I'm wrong on this point, I hope someone will correct the code.

Hope this helps, and please let me know what happens.

///////// chack firstname (English leter OR numbers
$.validator.addMethod("getNick", function (value, element) {
    return this.optional(element) || /^[a-zA-Z0-9._-]{3,16}$/i.test(value);
}, "Username are 3-15 characters");
rules: {
        firstname: {
            required: true,
            minLength: 3,
            getNick: true

and this

return /^[a-zA-Z0-9._-]{3,16}$/i.test(value);

would be the change to the return [to 'simplify' it].

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.