我就拆你的問題分爲兩個步驟:
在你的情況,我會分裂Clipboard.GetText()
所有非字母數字的字符:
string[] splitArray = Regex.Split(Clipboard.GetText(), @"[^a-zA-Z\d]+");
foreach (string s in splitArray)
{
// process s
}
然後爲每個分割字符串s
,適用,只有符合其至少有一個字母(?=.*[a-zA-Z])
,至少一個數字(?=.*\d)
字符串,正好是7個字符長的正則表達式^[a-zA-Z\d]{7}$
:
new Regex(@"^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{7}$");
實施例:
Regex regex = new Regex(@"^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{7}$");
string[] splitArray = Regex.Split(Clipboard.GetText(), @"[^a-zA-Z\d]+");
foreach (string s in splitArray)
{
if (regex.IsMatch(s))
{
// s is a valid service tag
}
}
鑑於INP ut "123ABCD, ABCDEFG... ABCD123, 123AAAAAAAA"
,splitArray
將等於["123ABCD", "ABCDEFG", "ABCD123", "123AAAAAAAA"]
。
regex.IsMatch(s)
對於s
"123ABCD"
和"ABCD123"
將返回true。
你可以發佈一些包含服務標籤的示例輸入嗎?給我們一些額外的文本可以幫助我們捕獲正確的子串並避免不需要的位。服務標籤是否始終只有CAPS和數字? – mickmackusa