Javascript 正则表达式中的否定

Javascript 正则表达式中的否定,javascript,regex,Javascript,Regex,我想在JavaScript中使用正则表达式进行表单输入验证。 这是一个字符串,不应包含或我提到的任何特定字符集。如果字符串没有这些字符,测试应该通过 那么我如何在正则表达式中指定不包含字符呢 示例: stringX = "vijay<>@$%_" 假设我想验证2个字符串 案例1:只有数字。我将使用regExp://^[\d]*$/ 案例2:没有。我会使用regExp://^[`]*$ 因为我不想指定允许的所有字符。我想具体说明一下字符 这是不允许的 但是我的validate函数只在

我想在JavaScript中使用正则表达式进行表单输入验证。 这是一个字符串,不应包含<、>或我提到的任何特定字符集。如果字符串没有这些字符,测试应该通过

那么我如何在正则表达式中指定不包含字符呢

示例:

stringX = "vijay<>@$%_"
假设我想验证2个字符串

  • 案例1:只有数字。我将使用regExp://^[\d]*$/
  • 案例2:没有。我会使用regExp://^[`]*$ 因为我不想指定允许的所有字符。我想具体说明一下字符 这是不允许的
  • 但是我的validate函数只在案例1中使用。
    与案例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, '');
    
    /^[^<>`]*$/