簡體   English   中英

正則表達式IsMatch不能按預期工作

[英]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!
}

MSDN: String.IndexOfAny方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM