用户名的正则表达式(regex,regexp)

时间:2019-12-08 18:59:54

标签: javascript

Actual Code Code Instructions
(更新) :我将说明和代码添加为图片。我尝试了建议,但没有通过。 (更新)

这是我在这里的第一个问题。一直在使用堆栈寻求建议,但这次我很困惑。我是正则表达式的新手,因此对这项工作一无所知。

问题如下:

”编写一个正则表达式测试,以便...

  • 仅包含字母数字字符(小写和大写字母

  • )的用户名
  • 仅允许使用数字-(无空格,无下划线)

  • 至少包含2个字符

  • 具有一个数字,因为通过格式接受最终字符(例如'Jason1')

我们在这里使用此代码... 函数validate(){   让inputStr = document.getElementById(“ username”)。value;

// const myReg = //取消注释此行,并在此处添加正则表达式文字

如果(myReg.test(inputStr))     alert(“接受用户名”);   其他     alert(“用户名必须仅包含字母数字字符,最少包含两个字符,并以数字结尾。”); }

因此,我们必须取出Uncomment,并希望它与myReg.test相匹配。 我尽力做到/^[a-z\d][5.12]$/i和/ ^ [a-z \ d +?] $ / i 但是我完全没事了!看起来如何?

2 个答案:

答案 0 :(得分:0)

我的解决方案是这样(regex101 link):

/[A-z0-9]+\d/

让我解释一下。

您可以使用[]创建允许的字符列表(例如,每个[]将匹配一个字符,但列表中可以匹配任何一个字符)。通常,我会使用\w,但这等效于[A-Za-z0-9_],并且该问题没有下划线规定(您可以通过对A进行z来节省空间,因为大写字母是在Unicode中小写之前)。

{}用于指定必须匹配的字符数量。因此,您可以说a{3,6},这意味着只有三到六个a之间可以匹配。您可以省略最后一个索引(a{3,}),至少说出这么多匹配项,或者说在n和无限制时间之间。使用此功能,可以将“至少一个”与{1,}匹配。然后将其缩短为等效的+

最后,我们说正则表达式的末尾必须有一个数字\d

通过要求任何接受的字符中至少有一个末尾带有数字来覆盖“最小长度为2”。一加一等于二。

答案 1 :(得分:0)

function validate() {
  let inputStr = document.getElementById("username").value;

 const myReg = /^[a-z0-9]{1,}[0-9]$/igm

  if (myReg.test(inputStr)) 
    alert("Username accepted");
  else
    alert("Username must contain only alphanumeric characters, contain a minimum of two characters, and end with a digit.");
}

此链接将使您了解所有正则表达式https://regex101.com/r/dX3hD4/240