我无法弄清楚除了MD5哈希之外还会抓住每个单词的正则表达式。 - 我正在使用[a-zA-Z0-9]+
来匹配每个单词。我如何增加它,以便它忽略我认为像[a-fA-F0-9]{32}
的东西,它将匹配MD5哈希。我的问题是关于正则表达式。
8e85d8b3be426bc8d370facdb0ad3ad0
string
stringString
63994b32affec18c2a428cdfcb0e2823
stringSTRINGSTING333
34563994b32dddddddaffec18c2a
stringSTRINGSTINGsrting
感谢您的帮助。 :)
答案 0 :(得分:2)
这种事情通常是以负面的前瞻方式完成的:
/\b(?![0-9a-f]{32}\b)[A-Za-z0-9]+\b/
在每个单词的开头,(?![0-9a-fA-F]{32}\b)
尝试精确匹配32个十六进制数字,后跟单词边界。如果成功,则正则表达式失败。
答案 1 :(得分:1)
以下对我来说很好:
/^[a-f0-9]{8}(-)[a-f0-9]{4}(-)[a-f0-9]{4}(-)[a-f0-9]{4}(-)[a-f0-9]{12}$/i
答案 2 :(得分:0)
如前所述,只需抓住所有与MD5哈希不匹配的单词即可 (首先,你必须拆分字符串)
var s = "8e85d8b3be426bc8d370facdb0ad3ad0\nstring\nstringString\n63994b32affec18c2a428cdfcb0e2823\nstringSTRINGSTING333\n34563994b32dddddddaffec18c2a\nstringSTRINGSTINGsrting";
words = [];
words_all = s.split(/\s+/);
for (i in words_all) {
word = words_all[i];
if (! word.match(/^[a-fA-F0-9]{32}$/)) { words.push(word) }
}
// words = ["string", "stringString", "stringSTRINGSTING333", "34563994b32dddddddaffec18c2a", "stringSTRINGSTINGsrting"]
(假设,根据您的原始代码,您想使用javascript)