正则表达式匹配32个字符的混合字符串

时间:2017-10-03 22:23:31

标签: javascript regex

我需要Javascript正则表达式来匹配这样的字符串......

  

loYm9vYzE6Z-aaj5lL_Og539wFer0KfD

     

pxeGxvYzE6o97T7OD2mu_qowJdqR7NRc

     

gwaXhuYzE6l3r1wh5ZdSkJvtK6uSw11d

它们是32个字符的字符串,带有混合的字母,数字,标点符号和大小写。

我一直在使用/[\w-]{32}/g(实际上,var matches = inputData.body.match(/[\w-]{32}/g)) - 但我发现它错误地从长度超过32个字符的字符串中提取匹配的字符串。

就是说,它在

中找到了
  

“aHR0cHM6Ly9hcHAuZTJtYS5uZXQvYXBwMi9hdWRpZW5jZS9vcHRfb3V0LzE0 MDEwMTQvMTQwMDgxNC81 NjQ2MzE4Lw ==”,   两个字符串“aHR0cHM6Ly9hcHAuZTJtYS5uZXQvYXBw”和   “Mi9hdWRpZW5jZS9vcHRfb3V0LzE0MDEw”。

这不是正确的行为 - 我不想匹配32个字符的字符串,它只是较长字符串的一部分,但不太可能。我是否需要使用单词边界或其他东西?

那么那会是/b/[\w-]{32}/g/b吗?我不清楚这个结构。

1 个答案:

答案 0 :(得分:2)

根据文件中的格式和分隔符,您可以通过多种方式执行此操作:

`\b[\w-]{32}\b` 

会强制值围绕值

`\s[\w-]{32}\s` 

会强制值

周围的空白区域
`^[\w-]{32}$` 

只匹配32个字符值的行

`(?!([\w-=]{33})[\w-]{32}` 

将匹配任何32个字符的字符串,除非有33个字符的字符串,否则等号将从包含后续排除字符的字母数字字符串中排除最后一个可用匹配。但是,为了对抗任何更长的字符串,除了提供的示例之外,它需要与我给出的前两个示例之一组合。