匹配正则表达式,处理数字和字母

时间:2017-03-17 11:35:41

标签: javascript regex

所以我使用的是javascript,我需要使用正则表达式来匹配一些数字和字母混合的数据,但是因为我现在正在学习正则表达式,这个任务太复杂了,我无法理解并让它像我一样工作想要它,有什么想法吗?

  

[ABC] [122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [ 1113B86JD ] RANDOM   [ABC] [122/29] [13:40] [RANDOM_TEXT] [PRT] [TPT] [RANDOM] [ 115M3X2G9 ]随机   [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个字符,所以我找到了两个正则表达式,其余的数据仍然是数字和字母的混合但没有括号。

  1.   

    [(。*?)]

  2. 用于获取括号之间的数据

    1.   

      ^([0-9] + [A-ZA-Z] + | [A-ZA-Z] + [0-9] +)[0-9A-ZA-Z] * $

    2. 获取数字和字母的混合

      现在我如何将两者结合起来,我尝试了很多次使其工作但它没有用,有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

你似乎追求的模式是9个字母和数字的组合(不多也不少)。我也认为你想要的是在第一场比赛后继续进行搜索。如果是,则使用全局标记g。有关详细信息,请参阅代码段。

<强>段

var str = '[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';


var res = str.match(/(\b\w{9}\b)/g);
/* \b word boundry 
|| \w Any word or number 
|| {9} 9 of \w
|| \b word boundry
*/
console.log(res);

答案 1 :(得分:1)

您需要使用特殊的“复合括号”将您的字母和数字正则表达式(即第二个没有^$锚点)括起来:

(?:^|\[|\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

请注意我从你的第二个表达式非捕获((...))中创建了组((?:...)),因为在这种特殊情况下,只需要分组。