I want to use regular expression in JavaScript for form input validation. These is a string which should not have either < , > or any specific set of chars which I mention. The test should pass if the string don't have those chars.
So how can I specify in regular expression not to have a char.
Example:
stringX = "vijay<>@$%_"
my objective is
Note:
I could do :
stringX = "vijay<>@$%_"
regExp=/[<>`]/;
if(!rexExp.test(stringX)) {
doSomthing()
}
but I don't want this.
Because I will end up in a small trouble.
I have a generic function called validate()
function validate(stringX, regExp)
{
if(rexExp.test(stringX)) { // see there is no "!" in the condition.
return true;
}
}
Let's say I want to validate 2 strings.
But my validate function will work with only in the case 1. As in the case 2, I will not get the expected result. Validate() would give me true only if string has only <,>,` chars.
Similarly, the negation variant of the character class is defined as "[^ ]" (with ^ within the square braces), it matches a single character which is not in the specified or set of possible characters. For example the regular expression [^abc] matches a single character except a or, b or, c.
From this it is obvious that the negation of a regular language is regular, just run the original state machine and accept if it rejects and vice versa. This clearly only requires finite state and so it corresponds to a regular language.
Negation: “[^]” It defines the symbol as the negation variant of the character class. It matches all the characters that are not specified in the character class in regex in java. (eg) (i).
The regexp you are looking for is this:
/^[^<>`]*$/
If you are doing this to ensure people don't inject html tags into the input, forget using javascript as validator.
It will only give you a false sense of security and will not stop anyone from abusing your system.
A better approach is one fo the following:
The last solution is the one i usually prefer, since it is the most flexible,for instance if the user should be able to edit the original input later.
Lastly, always htmlencode usergenerated content before outputting it, or you will end in trouble :)
If you are okay with literally any other characters being in the string, this will match all strings that don't have the characters <, >, and `:
regexp=/[^<>`]*/;
Edit: corrected expression with line start/end anchors (thanks MizardX):
regexp=/^[^<>`]*$/;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With