javascript正则表达式(用户名验证)

hor*_*ars 8 javascript regex

我想强制执行

  1. 输入的firstname应该只包含字符AZ,az和 -
  2. 输入登录名应仅包含字母数字字符

如何在javascript中限制这两个规则?

下面是我的用户名正则表达式的代码(jsp).但它没有正常工作.

function validateForm(){
    var nameRegex = /^[a-zA-Z\-]+$/;
    var validfirstUsername = document.frm.firstName.value.match(nameRegex);
    if(validUsername == null){
        alert("Your first name is not valid. Only characters A-Z, a-z and '-' are  acceptable.");
        document.frm.firstName.focus();
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jas*_*ary 19

除了不一致的变量引用之外,你所拥有的代码看起来很好(参见Josh Purvis的评论).

以下正则表达式适用于您的名字规范:

var nameRegex = /^[a-zA-Z\-]+$/;
Run Code Online (Sandbox Code Playgroud)

为用户名检查添加数字非常简单:

var usernameRegex = /^[a-zA-Z0-9]+$/;
Run Code Online (Sandbox Code Playgroud)

注意:编写正则表达式的方法有很多种.我选择提供与您开始时匹配的版本.我鼓励您完成这个正则表达式教程

  • ^表示匹配字符串中的起始位置 (2认同)
  • `^` 表示字符串的开头。`$` 表示结束。例如,如果您省略了 `^`,`~@*##@horatio` 将通过您的验证。同样对于`$` 和被检查的字符串的结尾。 (2认同)
  • 我想指出,这允许 12345 作为有效用户名传递。你如何确保至少有一封信? (2认同)

Ben*_*ing 10

这是我想出的验证函数,请根据您自己的用例进行定制:

function isUserNameValid(username) {
  /* 
    Usernames can only have: 
    - Lowercase Letters (a-z) 
    - Numbers (0-9)
    - Dots (.)
    - Underscores (_)
  */
  const res = /^[a-z0-9_\.]+$/.exec(username);
  const valid = !!res;
  return valid;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

用户名只能使用字母、数字、下划线和句点。

  const onValidUsername = (val) => {
    const usernameRegex = /^[a-z0-9_.]+$/
    return usernameRegex.test(val)
  }
Run Code Online (Sandbox Code Playgroud)