代碼親自測試過,放心使用,完美解決。
網(wǎng)上很多文章都沒有寫清楚,到底是從一段字符串中截取其中的guid,還是判斷一段字符串到底是不是guid
GUID格式:
由三十二位數(shù)字和字母組成。
{8位-4位-4位-4位-12位}
ps:從一段字符串中截取可能有也可能沒有g(shù)uid
使用這個正則表達式[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}
代碼如下:
private string GetGuidByStr(string str){
string result = string.Empty;
var matchResult = Regex.Match(str, @"[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}", RegexOptions.IgnoreCase);if (matchResult.Success)
{
result = matchResult.Value;//var nextMatch = matchResult.NextMatch();}
}
當(dāng)然這段代碼如果要獲取多個guid怎么辦?可使用matchResult.NextMatch()
測試結(jié)果:如:12打長s8508cac9-f21a-e411-8d02-90b11c0b17d6
結(jié)果就是:8508cac9-f21a-e411-8d02-90b11c0b17d6
ps:這里需要注意的是正則表達式^
和$
的作用了。
$
匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,則 也匹配或。要匹配 字符本身,請使用 $。
^
匹配輸入字符串的開始位置,除非在方括號表達式中使用,當(dāng)該符號在方括號表達式中使用時,表示不接受該方括號表達式中的字符集合。要匹配 ^ 字符本身,請使用 ^。
所以說如果要判斷一個字符串是否是guid,就需要使用這個字符,判斷是否是guid的正則表達式:^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$
完整解決代碼如下:
private bool IsGuid(string str) {
var matchResult = Regex.Match(str, @"^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$", RegexOptions.IgnoreCase);
return matchResult.Success;
}
聯(lián)系客服