Ruby regex specify length of captured group

I need to match a string of variable length(between 5 and 12), composed of uppercase letters and one or more digits between 1 and 8. How can I specify that I need the whole captured group's length to be between 5 and 12? I have tried with parenthesis but with no luck. I have tried this

s([A-Z]+[1-8]+[A-Z]+){5,12}s

My idea was to use the quantifier {5,12} to limit the length of the captured group between parenthesis, but clearly it doesn't work like that.

The string needs to be identified inside a normal text just like

"THE STRING I NEED TO DECODE IS SOMETHING LIKE FD1531FHHKWF BUT NOT LIKE g4G58234JJ"

You actually have two conditions to met:

The length of the match is to be specified with curly brackets {5,12} , and before and after there should be not letters/digits. So:

/(?!b[A-Z]+b)b[A-Z1-8]{5,12}b/

First, we assure that the lookahead for letters only is negative, then we look for the pattern.

链接地址: http://www.djcxy.com/p/12982.html

上一篇: 正则表达式:获取捕获组的位置列表,不匹配

下一篇: Ruby正则表达式指定捕获组的长度