【发布时间】:2018-03-15 05:22:43
【问题描述】:
我需要 Javascript 正则表达式来匹配这样的字符串...
loYm9vYzE6Z-aaj5lL_Og539wFer0KfD
pxeGxvYzE6o97T7OD2mu_qowJdqR7NRc
gwaXhuYzE6l3r1wh5ZdSkJvtK6uSw11d
它们是 32 个字符的字符串,混合了字母、数字、标点和大小写。
我一直在使用 /[\w-]{32}/g(实际上是 var matches = inputData.body.match(/[\w-]{32}/g)) - 但我只是注意到它错误地从长度超过 32 个字符的字符串中提取匹配的字符串。
也就是说,它在
中找到了"aHR0cHM6Ly9hcHAuZTJtYS5uZXQvYXBwMi9hdWRpZW5jZS9vcHRfb3V0LzE0MDEwMTQvMTQwMDgxNC81NjQ2MzE4Lw==", 两个字符串“aHR0cHM6Ly9hcHAuZTJtYS5uZXQvYXBw”和 “Mi9hdWRpZW5jZS9vcHRfb3V0LzE0MDEw”。
这不是正确的行为——我不想匹配一个 32 个字符的字符串,它只是一个较长字符串的一部分,尽管这不太可能。我需要使用单词边界吗?
那会是像/b/[\w-]{32}/g/b 这样的东西吗?我不清楚结构。
【问题讨论】:
-
是的,单词边界 (
\b) 应该可以为您解决这个问题。唯一的问题是您使用的是/而不是\,并且您第二次使用\b被放置在g全局修饰符的右侧,这实际上是在正则表达式模式之外。 -
那我要
\b/[\w-]{32}\b/g吗?我应该双斜线任何一个 \bs 吗? -
差不多。正斜杠表示许多语言中正则表达式模式的开头和结尾,就像字符串周围的引号一样。你要找的是
/\b[\w-]{32}\b/g。
标签: javascript regex