regex 正则表达式至少匹配9个字母和1个数字

nbnkbykc  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(197)

我试图找到一个正则表达式,它匹配至少包含9个字母和1个数字的字符串。字母和数字的位置可以是任何地方。

    • 示例字符串**
rahulkumar1
rahul9kumar
1RahulKumar
    • 我目前的模式**
/[A-Za-z]{9,}[0-9]{0,1}/

但它不起作用:

gz5pxeao

gz5pxeao1#

如果只允许字符a-z A-Z和一个数字:

^(?=[a-zA-Z\d]{10})[a-zA-Z]*\d[a-zA-Z]*$

说明

  • ^字符串开头
  • (?=[a-zA-Z\d]{10})至少声明10个字符
  • [a-zA-Z]*\d[a-zA-Z]*在字符a-zA-Z之间至少匹配一个数字
  • $字符串结束

Regex demo

5us2dqdw

5us2dqdw2#

这是否有效(JS):

let a = "abcedf123.f4ada";
let b = [...a.matchAll(/[a-zA-Z\d]{9,}/g)];
console.log(b);
xxe27gdn

xxe27gdn3#

也许可以创建一个利用正则表达式的函数,以确认满足了适当的要求。
下面的javascript函数接收一个字符串作为参数,并根据它是否满足条件返回“true”或“false”。在这种情况下,条件是:9+字母字符,正好1个整数,0个特殊字符(下划线除外)。正则表达式与对立面匹配,以便可以删除它们并计算剩余部分。有多种方法可以做到这一点。使用了三种正则表达式模式:

  • \D匹配所有非数字。
  • [^a-zA-Z]匹配所有非字母字符,大写或小写。
  • \W匹配除数字、字母字符或下划线以外的所有字符。

我推荐RegExr.com来学习更多,并玩你自己的正则表达式。

function isValidString (str) {
    let intTotal = str.replace(/\D/g,"").length,
        letterTotal = str.replace(/[^a-zA-Z]/g, "").length,
      nonwordCharTotal = str.replace(/\w/g, "").length;
  if (intTotal == 1 && letterTotal >= 9 && nonwordCharTotal == 0) return true;
  return false;
}

alert(
  `
    rahulkumar1 = ${isValidString("rahulkumar1")}
    rahul9kumar = ${isValidString("rahul9kumar")}
    1RahulKumar = ${isValidString("1RahulKumar")}
    rahulkumar = ${isValidString("rahulkumar")}: <1 digits
    rahul1 = ${isValidString("rahul1")}: <9 alphabetical characters
    rahulkumar123 = ${isValidString("rahulkumar123")}: >1 digits
    rahul9kumar! = ${isValidString("rahul9kumar!")}: >0 non-alphanumeric characters
  `
);

相关问题