0
Match match = Regex.Match("555-5555555", "^(\\d{3}\\-?\\d{3}\\-?\\d{4})$", RegexOptions.None);
it["Should match"] = () => match.Success.should_be_true();

上記は私が信じているものと一致するはずです。数字が必要ですが、ハイフンはオプションのままにしておきます。ただし、上記はfalseを返し、テストに失敗します。

編集

ダリンが正しいので受け入れられた答え、私のテストスコープに何か問題があります。合格した私の更新されたコードは次のとおりです。

Match match;
    void describe_example()
    {

        context["goodregex"] = () =>
        {
            before = () => match = Regex.Match("555-5555555", "^(\\d{3}\\-?\\d{3}\\-?\\d{4})$", RegexOptions.None);
            it["Should match"] = () => match.Success.should_be_true();
        };

        context["badregex"] = () =>
        {
            before = () => match = Regex.Match("555-5525-5555", "^(\\d{3}\\-?\\d{3}\\-?\\d{4})$", RegexOptions.None);
            it["Should not match"] = () => match.Success.should_be_false();
        };

    }
4

3 に答える 3

1

あなたの正規表現は私のマシンで正しく動作します。さまざまな種類の電話番号を検証する正規表現については、こちらを参照してください (ニーズと比較して、最も適切なものを選択できます)。

http://www.regexlib.com/Search.aspx?k=phone&AspxAutoDetectCookieSupport=1

于 2012-06-18T15:33:55.643 に答える
1

次のプログラムは true を出力します。

class Program
{
    static void Main()
    {
        var match = Regex.Match("555-5555555", "^(\\d{3}\\-?\\d{3}\\-?\\d{4})$", RegexOptions.None);
        Console.WriteLine(match.Success);
    }
}

matchテストを同時に実行しているときに変数が変更されている単体テストで、スコープの問題が発生していると思います。

于 2012-06-18T15:35:59.357 に答える
0

正規表現は私にはうまく見えます。実際match.Success、私のマシンではそうです。私はおそらく正規表現を次のように書き直します:

"^(\\d{3}\\-?){2}\\d{4}$"

ただし、それは好みの問題です。

于 2012-06-18T15:34:36.377 に答える