正则表达式不适用于特殊字符

时间:2017-04-20 12:11:00

标签: javascript

我试图为具有以下条件的字段创建正则表达式。

  1. 不允许空白
  2. 除下划线,连字符,句号外,不允许使用特殊字符。
  3. 允许使用字母和数字。
  4. 我已经创建了自己的正则表达式,但它在开头就接受了一个特殊字符

    1. 就像我在字段中输入 @或$ wer 一样,它会起作用并保存数据。

    2. 如果我在字段中输入 @@,%^ hihf或qwerty @ 333 ,则会显示错误。

    3. 找到下面的代码。

      $.formUtils.addValidator({
              name: "username",
              validatorFunction: function(a) {
                 return !!a.match((/^[^\s][ A-Za-z0-9_./-]*$/))
              },
              errorMessage: "Please enter a valid Username (Special characters are not allowed apart from Underscore(_), Hyphen(-) and Period(.)) ",
              errorMessageKey: "badname"
          }), 
      

2 个答案:

答案 0 :(得分:2)

我认为在某些条件下你需要的不仅仅是正则表达式。尝试:

validatorFunction: function(a) {
    var rgx = /^[A-Za-z0-9_./-]+$/;
    var trimmed = a.trim();
    return trimmed.length > 0 && rgx.test(trimmed);
}

这将解决空白,特殊字符和强制字母数字的问题......

答案 1 :(得分:1)

正则表达式开头的[^\s]表示空格以外的任何字符都有效,因此“@”将匹配。

我认为你想使用这样的东西来允许前导和尾随空格并强制至少1个有效字符:

return !!a.match((/^\s*[A-Za-z0-9_\./\-]+\s*$/))