正则表达式不允许特殊字符

时间:2015-12-15 09:21:07

标签: jquery backbone.js knockout.js

if ((new RegExp("[^0-9A-Z]{5}")).test(self.accountVerInfo.mobileVerifyId())) {
    return show_notification('error', 'Error', 'Please Enter Valid OTP');
}

我想限制特殊字符,长度也应该是5个字符。当我输入. /时,它被允许。

2 个答案:

答案 0 :(得分:0)

如果你打破当前的if语句:

if ((new RegExp("[^0-9A-Z]{5}")).test(self.accountVerInfo.mobileVerifyId())) {
    return show_notification('error', 'Error', 'Please Enter Valid OTP');
}
  • check reg expr:
  • 如果恰好有5个不允许的字符
  • 匹配ID
  • 显示错误

您的支票[^0-9A-Z]{5}是:

  • [^0-9A-Z] - 任何不是数字或大写字母的字符
  • {5}正好有5个

所以如果你输入'a' - 它会通过,但如果你输入'abcde',它就会失败。

您似乎有两个要求:如果出现传递

  • 正好是5个字符
  • 不是特殊字符

而不是根据您的需要进行否定检查,将其更改为您想要的内容:

  • 正好是5个字符
  • 是数字或大写字母

数字或大写= [0-9A-Z] 5个字符是{5}

然后您还需要检查整个ID,而不仅仅是它是否包含该ID(否则. ABCDE\会通过),因此您需要添加^$作为开始和结束-of string - 这些是在正则表达式的开头/结尾:

^[0-9A-Z]{5}$

但现在这是对允许的内容的检查,而不是不允许的内容,所以也要反转你的if:

if (!(new RegExp("^[0-9A-Z]{5}$")).test(self.accountVerInfo.mobileVerifyId())) {
  return show_notification('error', 'Error', 'Please Enter Valid OTP');
}

答案 1 :(得分:0)

^ [0-9A-ZA-Z] {5} $

这个正则表达式将接受5个字符(大写或小写)/数字没有特殊字符。