所以我正在使用javascript,我需要使用正则表达式来匹配一些数字和字母混合的数据,但由于我目前正在学习正则表达式,所以这个任务对我来说太复杂了,无法理解并使其像我一样工作想要它,有什么想法吗?
[ABC][122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [1113B86JD] RANDOM [ABC][122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [115M3X2G9] RANDOM [ABC][122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [1113P86JD] RANDOM [ABC][122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [314PTVPNL] RANDOM [ABC][122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] 114PAVPNL RANDOM
90%的时间我想要的数据是在两个括号之间,长度大于5个字符,所以我找到了两个正则表达式,其余的数据仍然是数字和字母的混合,但没有括号。
-
[(.*?)]
用于获取括号之间的数据
-
^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$
用于获取数字和字母的混合
现在如何将两者结合起来,我尝试了很多次让它工作,但没有成功,有人可以帮助我吗?
最佳答案
您需要用特殊的“复合括号”将字母和数字正则表达式(即第二个没有 ^
和 $
anchor 的正则表达式)括起来:
(?:^|\[|\s)((?:[0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*)(?:$|\]|\s)
左“复合括号”可以由文本开头 (^
)、左方括号 (\[
) 或空格 (\s
)。因此,正则表达式开头的 (?:^|\[|\s)
。
右“复合括号”可以用文本结尾 ($
)、右方括号 (\]
) 或空格 (\s
)。因此,正则表达式末尾的 (?:$|\]|\s)
。
您需要的字母和数字序列位于第一个捕获组中。
演示:https://regex101.com/r/WLwu9p/1
请注意,我从第二个表达式中将组 ((...)
) 设置为非捕获 ((?:...)
),因为在这个特定的情况下仅需要大小写分组。
关于javascript - 匹配正则表达式,处理数字和字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856495/