【问题标题】:How to validate user name with regular expression如何使用正则表达式验证用户名
【发布时间】:2021-11-28 15:30:49
【问题描述】:

我想使用正则表达式验证用户名,但是我使用的表达式在 https://regexr.com/  上运行良好,但在我的代码中却不行。我只希望用户只能添加字母数字和它们之间的空格

var letters = /^[A-Za-z]+$/g;

function validate() {
  var input = document.getElementById("fname").value;
  if (input.match(letters)) {
    document.getElementById("name").innerHTML = "** Only alphabets are allowed in name.";
    return false;
  }
}
<input id="fname">
<input type="button" onclick="validate()" value="Check">
<br>
<span id="name"></span>

【问题讨论】:

  • 限制用户名通常是个坏主意,例如 Peter O'Donelly-Smith 可能对此不满意。 为什么需要限制用户名?这可能有助于我们为您找到更好的解决方案。
  • 我实际上想验证用户名,以便用户可以以“Ali Ahmed”格式输入他们的姓名。
  • @AndrewMorton 我不同意...混乱的用户名将是一个坏主意。如果有人利用它,对其他用户来说会很糟糕,并且会很烦人。每个体面的服务都会限制用户名。
  • 这能回答你的问题吗? Regular expression "^[a-zA-Z]" or "[^a-zA-Z]"
  • @FlashThunder 试着告诉任何希望他们的名字被正确表示的人,但系统不允许这样做。

标签: javascript


【解决方案1】:

您当前的功能是“查找字母数字字符”。因此,当您运行validate() 时,它会返回一个有效的数组或null。要获取空格,请使用/^[\w\-\s]+$/,尽管这将为多个空格返回 true。我不确定你的用例。

除非您想更改正则表达式,否则您需要在 input.match() 返回错误值时显示警告。为此,请将 ! 放在您的 input.match() 函数之前

var letters = /^[\w\-\s]+$/;

function validate() {
  document.getElementById("name").innerHTML = "";

  var input = document.getElementById("fname").value;

  if (!input.match(letters)) {
document.getElementById("name").innerHTML = "** Only alphabets are allowed in name.";
return false;
  }
}
<input id="fname">
<input type="button" onclick="validate()" value="Check">
<br>
<span id="name"></span>

【讨论】:

  • 是的,伙计们,我应该更具体地阅读这个问题,而不是仅仅修复现有代码的错误。我会更新或删除我的答案。
  • 另外,这是stackoverflow.com/questions/13283470/…的副本吗?
猜你喜欢
  • 2017-10-04
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多