Javascript 正则表达式中的否定
我想在JavaScript中使用正则表达式进行表单输入验证。 这是一个字符串,不应包含<、>或我提到的任何特定字符集。如果字符串没有这些字符,测试应该通过 那么我如何在正则表达式中指定不包含字符呢 示例:Javascript 正则表达式中的否定,javascript,regex,Javascript,Regex,我想在JavaScript中使用正则表达式进行表单输入验证。 这是一个字符串,不应包含或我提到的任何特定字符集。如果字符串没有这些字符,测试应该通过 那么我如何在正则表达式中指定不包含字符呢 示例: stringX = "vijay<>@$%_" 假设我想验证2个字符串 案例1:只有数字。我将使用regExp://^[\d]*$/ 案例2:没有。我会使用regExp://^[`]*$ 因为我不想指定允许的所有字符。我想具体说明一下字符 这是不允许的 但是我的validate函数只在
stringX = "vijay<>@$%_"
假设我想验证2个字符串
与案例2一样,我不会得到预期的结果。Validate()仅当字符串只有'chars'时才为true 如果您同意字符串中的任何其他字符,这将匹配所有没有字符的字符串,并且`:
regexp=/[^`]*/;
编辑:使用行开始/结束锚点更正表达式(感谢MizardX):
regexp=/^[^`]*$/;
stringX=“vijay@$%”
regEx=/[`]/g;
stringX.替换(正则表达式,”);
您要查找的regexp是:
/^[^<>`]*$/
/^[^`]*$/
如果您这样做是为了确保人们不会将html标记注入到输入中,那么请忘记使用javascript作为验证程序
它只会给你一种虚假的安全感,不会阻止任何人滥用你的系统
更好的方法是以下方法之一:
- 从服务器端剥离charachters
- html在存储输入服务器端之前对其进行编码
- 按原样存储输入,并在输出时对其进行html编码
最后,在输出用户生成的内容之前,一定要对其进行htmlencode,否则您将陷入困境:)您所做的似乎很简单。你不喜欢它的什么?我更新了上面的问题。因为我有一个通用的validate()函数,所以我不得不说否定。添加锚定
^
和$
,它应该可以工作。如果没有它们,它将始终在开始时匹配空的子字符串。我已经在服务器端验证并去除字符。但是我不想在我已经知道客户端不允许的情况下进行服务器调用。因此,我想通知用户,他是否在没有等待服务器端验证的情况下输入了这些字符。
function validate(stringX, regExp)
{
if(rexExp.test(stringX)) { // see there is no "!" in the condition.
return true;
}
}
regexp=/[^<>`]*/;
regexp=/^[^<>`]*$/;
stringX = "vijay<>@$%_"
regEx=/[<>`]/g;
stringX.replace(regEx, '');
/^[^<>`]*$/