正则表达式否定

Vij*_*hna 5 javascript regex

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

那么如何在正则表达式中指定不要有char.

例:

stringX = "vijay<>@$%_"
Run Code Online (Sandbox Code Playgroud)

我的目标是

  1. 字符串不应该有'<','>'字符.
  2. 如果stringX没有那些字符,test应该传递返回true.

注意:

我可以 :

stringX = "vijay<>@$%_"
regExp=/[<>`]/; 
if(!rexExp.test(stringX)) {
  doSomthing()
} 
Run Code Online (Sandbox Code Playgroud)

但我不想要这个.

因为我最终会遇到一个小麻烦.

我有一个名为validate()的通用函数

function validate(stringX, regExp)
{
   if(rexExp.test(stringX)) {  // see there is no "!" in the condition.
      return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我想验证2个字符串.

  1. 案例1:具有唯一数字.我会用regExp:/ ^ [\ d]*$/
  2. 案例2:没有 <,>.我会使用regExp:/ ^ [<>`]*$因为我不想指定所有允许的字符.我想指定不允许的字符.

但我的验证功能仅适用于案例1.与案例2一样,我不会得到预期的结果.只有当string只有<,>,`字符时,Validate()才会给出真值.

Jas*_*ank 7

如果你对字符串中的任何其他字符都没问题,这将匹配所有没有字符<,>和`的字符串:

regexp=/[^<>`]*/;
Run Code Online (Sandbox Code Playgroud)

编辑:使用行开始/结束锚点修正表达式(感谢MizardX):

regexp=/^[^<>`]*$/;
Run Code Online (Sandbox Code Playgroud)

  • 添加锚点`^`和`$`,它应该工作.如果没有它们,它将始终匹配空子串. (2认同)