私はこれらの文字列にマッチしたい(3つの数字で始まり、3つの同じ文字で続きます。OR
は3つの同じ文字で始まり、3つの数字で続きます)。正規表現で()内のグループを定義して呼び出す方法は?
123xxx-xxx123
xxx123-123xxx
私が試した:
今string pattern = @"^(\d{3}(x{3})\-x{3}\d{3})|(x{3}\d{3}-\d{3}x{3})";
Console.WriteLine(Regex.IsMatch("123xxx-xxx123", pattern)); // True
Console.WriteLine(Regex.IsMatch("xxx123-123xxx", pattern)); // True
を、私はグループにそれらをしたい、いくつかの重複したサブパターンがあることがわかります。例:グループ\d{3}
をグループ(\d{3})
に、\1
と呼び出してください。
ので、製作中後の正規表現は、次のようになります。
私は更新されてきた何string pattern = @"^((\d{3})(x{3})\-\2\1)|((x{3})(\d{3})-\2\1)";
:
(\d{3}(x{3})\-x{3}\d{3})
その後((x{3})(\d{3})-\2\1)
へ
(x{3}\d{3}-\d{3}x{3})
((\d{3})(x{3})\-\2\1)
に、テストしようとしています。出力:False
,False
。私はそれを編集する前に考えて何
:
( (group 1) (group 2) - \2 \1 ) | ( (group 1) (group 2) - \2 \1 )
ここで何が悪いのでしょうか?
p/s:javascriptの回答を受け入れることができます。ありがとうございました!
ていますか?私はそれぞれ2 + 3と6 + 5を期待していたでしょう。 – jensgram
@jensgramもう一度チェックして同じ結果が得られました。入力文字列は正しいです。最初のパターンは正しいです。しかし、更新パターンは間違っています。 – Vayne
JSのスクラッチパッドのためのhttp://regexr.com/3gau6。 – jensgram