我想在JavaScript中使用正则表达式来进行表单输入验证。 这些字符串不应该具有< ,>或者我提到的任何特定的字符集。如果字符串没有那些字符,测试应该通过。
那么如何在正则表达式中指定不要有char。
示例:
stringX = "vijay<>@$%_"
我的目标是
注意:
我能做到:
stringX = "vijay<>@$%_"
regExp=/[<>`]/;
if(!rexExp.test(stringX)) {
doSomthing()
}
但我不想要这个。
因为我最终会遇到一个小麻烦。
我有一个名为validate()的通用函数
function validate(stringX, regExp)
{
if(rexExp.test(stringX)) { // see there is no "!" in the condition.
return true;
}
}
假设我要验证2个字符串。
但我的验证功能仅适用于案例1。 与案例2一样,我不会得到预期的结果。只有当string只有&lt;,&gt;,`chars时,Validate()才会给我真实。
答案 0 :(得分:6)
如果你对字符串中的任何其他字符都没问题,这将匹配所有没有字符&lt;,&gt;和`:
的字符串regexp=/[^<>`]*/;
修改:使用行开头/结尾锚点修正表达式(感谢MizardX):
regexp=/^[^<>`]*$/;
答案 1 :(得分:4)
您正在寻找的正则表达式是:
/^[^<>`]*$/
如果您这样做是为了确保人们不会在输入中注入html标签,请忘记使用javascript作为验证器。
它只会给你一种虚假的安全感,不会阻止任何人滥用你的系统。
更好的方法是以下几点:
最后一个解决方案是我通常喜欢的解决方案,因为它是最灵活的,例如,如果用户以后能够编辑原始输入。
最后,在输出之前总是htmlencode usergenerated内容,否则你将遇到麻烦:)
答案 2 :(得分:0)
stringX = "vijay<>@$%_"
regEx=/[<>`]/g;
stringX.replace(regEx, '');