[英]Regex.IsMatch doesn't work as expected
我希望代碼: Regex.IsMatch(val.ToString(),"[{()}]")
每次值是那種括號時都將返回true。 該代碼確實適用於那些括號-{()},而不適用於那些括號-[]。
為什么會這樣,我該如何解決? 還-當我嘗試修復它並像這樣的“ {([])}”重新放置括號時,這使我感到異常-括號的位置為何重要,它如何影響代碼?
[...]
與一組字符匹配,但不包含[]
因為它們是語法的一部分。 您想要的是:
Regex.IsMatch(val.ToString(),@"[\[{()}\]]")
由於它還包含[
和]
(轉義)
(要清楚:上面的語法匹配包含任何這些字符的字符串。它不能確保它包含適當的打開/關閉字符)
這可以通過比正則表達式更簡單(如果需要的話,可以更快)來解決。
硬編碼字符范圍:
switch (val.ToString()) {
case "{":
case "}":
case "(":
case ")":
case "[":
case "]":
// match!
break;
}
可配置的字符范圍:
var chars = "[]{}()".ToCharArray();
var str = val.ToString();
if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
// match!
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.