我试图找到一个正则表达式,它匹配至少包含9个字母和1个数字的字符串。字母和数字的位置可以是任何地方。
rahulkumar1 rahul9kumar 1RahulKumar
/[A-Za-z]{9,}[0-9]{0,1}/
但它不起作用:
gz5pxeao1#
如果只允许字符a-z A-Z和一个数字:
^(?=[a-zA-Z\d]{10})[a-zA-Z]*\d[a-zA-Z]*$
说明
^
(?=[a-zA-Z\d]{10})
[a-zA-Z]*\d[a-zA-Z]*
$
Regex demo
5us2dqdw2#
这是否有效(JS):
let a = "abcedf123.f4ada"; let b = [...a.matchAll(/[a-zA-Z\d]{9,}/g)]; console.log(b);
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 ` );
3条答案
按热度按时间gz5pxeao1#
如果只允许字符a-z A-Z和一个数字:
说明
^
字符串开头(?=[a-zA-Z\d]{10})
至少声明10个字符[a-zA-Z]*\d[a-zA-Z]*
在字符a-zA-Z之间至少匹配一个数字$
字符串结束Regex demo
5us2dqdw2#
这是否有效(JS):
xxe27gdn3#
也许可以创建一个利用正则表达式的函数,以确认满足了适当的要求。
下面的javascript函数接收一个字符串作为参数,并根据它是否满足条件返回“true”或“false”。在这种情况下,条件是:9+字母字符,正好1个整数,0个特殊字符(下划线除外)。正则表达式与对立面匹配,以便可以删除它们并计算剩余部分。有多种方法可以做到这一点。使用了三种正则表达式模式:
\D
匹配所有非数字。[^a-zA-Z]
匹配所有非字母字符,大写或小写。\W
匹配除数字、字母字符或下划线以外的所有字符。我推荐RegExr.com来学习更多,并玩你自己的正则表达式。