Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个字符串和数字组合正则表达式以及一些其他要求_Javascript_Regex - Fatal编程技术网

Javascript 一个字符串和数字组合正则表达式以及一些其他要求

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 -------

我想制作一个长度为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
--------------------------------------------------------------------------------
  \/                       '/'
--------------------------------------------------------------------------------
  (?=                      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]*
贪婪,效率更低。