2017-08-08 69 views
0

我想以匹配具有以下要求的字符串含有两个变量的字符串:匹配使用正则表达式

  • 该字符串包含5至10位。 [0-9]
  • 包含2到3个字母。 [A-Z]

例如

  • 123a2bc12
  • s123d456

这是我的正则表达式。/^ \ d * [A-Z] \ d * [A-Z] \ d * [A-Z]?\ d * $ /。但是这只能限制字母的数量。

+0

欢迎堆栈溢出!你能告诉我们你试过的是什么,它的行为与你期望的不同吗? – alexanderbird

+2

我不同意@zerkms。我们不知道这个演习的全部影响。也许现在最好暂缓。 – CAustin

+0

这是我的正则表达式。 '/^\ d * [A-Z] \ d * [A-Z] \ d * [A-Z]?\ d * $ /'。但是这只能限制字母的数量。 @alexanderbird – JKol

回答

1

这是不漂亮,但这个应该是你在找什么:

^(?=(?:[^a-zA-Z]*[a-zA-Z]){2,3}[0-9]*$)(?=(?:[^0-9]*[0-9]){5,10}[A-Za-z]*$).*$ 
+0

非常感谢。这个正则表达式可以工作。我不熟悉正则表达式,如果你能解释这个正则表达式,我将非常感激。 – JKol

+0

我做了一点挖掘来帮助我。这是你应该阅读的。 https://stackoverflow.com/questions/23426162/php-regex-for-string-with-3-9-letters-and-5-50-numbers @JKol希望这一切都有所帮助! –

0

我想你想这个

s=re.search(r'(\w+)','123a2bc12').group(1) 
print s #The output is '123a2bc12' 
+0

这种方法很好,但它不限制字母数量和字符串中的数字。 – JKol

+0

对不起,我不太明白。 – sobigballon