2017-08-08 82 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