我需要匹配一个可变长度的字符串(在5到12之间),由大写字母和1到8之间的一个或多个数字组成。 如何指定我需要整个捕获组的长度在5到12之间? 我试过括号但没有运气。 我试过这个
\s([A-Z]+[1-8]+[A-Z]+){5,12}\s
我的想法是使用量词{5,12}来限制所捕获的组在括号之间的长度,但显然它不会那样工作。
需要在普通文本中识别字符串,就像
一样"THE STRING I NEED TO DECODE IS SOMETHING LIKE FD1531FHHKWF BUT NOT LIKE g4G58234JJ"
答案 0 :(得分:2)
您实际上有两个条件可以满足:
匹配的长度用大括号{5,12}
指定,之前和之后不应有字母/数字。所以:
/(?!\b[A-Z]+\b)\b[A-Z1-8]{5,12}\b/
首先,我们保证只有字母的前瞻是否定的,然后我们会寻找模式。
答案 1 :(得分:1)
对正则表达式的总大小使用积极的预见
\s(?=^.{5,12}$)([A-Z]+[1-8]+[A-Z]+)\s
说明
(?= # look-ahead match start
^.{5,12}$ # 3 to 15 characters from start to end
) # look-ahead match end