Javascript 一个字符串和数字组合正则表达式以及一些其他要求
我想制作一个长度为10-20的正则表达式,必须至少有一个字符串和一个数字的组合,不能包含任何其他内容,并且第一个字符必须是字符串。我试过了Javascript 一个字符串和数字组合正则表达式以及一些其他要求,javascript,regex,Javascript,Regex,我想制作一个长度为10-20的正则表达式,必须至少有一个字符串和一个数字的组合,不能包含任何其他内容,并且第一个字符必须是字符串。我试过了 (?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{10,20} 但是它与诸如d之类的东西相匹配,这不是最佳的,有什么帮助吗?使用 /\/(?=\d*[A-Za-z])(?=[a-zA-Z]*\d)[A-Za-z0-9]{10,20}\b/ 看 解释 NODE EXPLANATION -------
(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{10,20}
但是它与诸如d
之类的东西相匹配,这不是最佳的,有什么帮助吗?使用
/\/(?=\d*[A-Za-z])(?=[a-zA-Z]*\d)[A-Za-z0-9]{10,20}\b/
看
解释
NODE EXPLANATION
--------------------------------------------------------------------------------
\/ '/'
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
\d* digits (0-9) (0 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
[A-Za-z] any character of: 'A' to 'Z', 'a' to 'z'
--------------------------------------------------------------------------------
) end of look-ahead
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
[a-zA-Z]* any character of: 'a' to 'z', 'A' to 'Z'
(0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
\d digits (0-9)
--------------------------------------------------------------------------------
) end of look-ahead
--------------------------------------------------------------------------------
[A-Za-z0-9]{10,20} any character of: 'A' to 'Z', 'a' to 'z',
'0' to '9' (between 10 and 20 times
(matching the most amount possible))
--------------------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
使用锚点,
^(?=.[A-Za-z])(?=.*\d)[A-Za-z0-9]{10,20}$
是的,但是我编写这个正则表达式的目的是为了检测url末尾的字符串,例如,我希望它检测到我不能使用锚点的最后一个序列。太好了,那么/\/(?=\d*[A-Za-z]*\d)[A-Za-z0}/
就可以了(如果URL在字符串的末尾)。如果不是,你需要指定URL的结尾是用什么来表示的。哎呀,我想我不是说得太具体了,我正在为一个包含消息的discord服务器制作这个正则表达式,请使它能够检测到像“嘿,伙计们,看看它太棒了!”然后它将完美地工作然后它将看起来像/\/(?=\d*[A-Za-z])(?=[A-Za-z]*\d)[A-Za-z0-9]{10,20}(?!\S)/
最后一个请求,你能添加一个至少有2个大写字符串的要求吗?看起来就像我所说的:(?=.[A-z])(.[A-z]){2,}(?=\d)[A-Za-z\d]{10,20}工作,因为我对正则表达式不是很在行,你能检查一下它是否满足所有条件吗?@永远不知道是的,(?=(.[A-Z]){2,})
可以,尽管(?=(?:[^A-Z]*[A-Z]){2}
会更好。@永远不知道是的,Wiktor的建议很好。*
比[^A-Z]*
贪婪,效率更低。