2011-02-08 14 views
2

Excelシート式でセル参照を検証します。シート名を含むExcelセル参照を検証するにはどうすればよいですか?

有効な文字列:

  1. Sheet1!A1
  2. 'Sheet!!'!A1

私は次の式を使用していますが、それは動作しません。

"^='?[^[]/\*]*'?!+[A-Z]+[0-9]+$" 
+1

あなたのコードを投稿できますか? –

+2

正規表現には、「regex codezを送信してください」と「regex not working」という2つの主要な種類の質問があります。これを第3の種類に変えましょう。有効な入力と一致しないのですか?無効な入力を受け入れていますか?どれ? 「うまくいきません」は問題の説明ではありません。 –

+0

二重引用符は何ですか?彼らは正規表現の一部ですか?それらは文字区切り文字ですか?文字列区切り文字の場合は、通常の文字列の代わりに逐語文字列を使用する必要があります。パスや正規表現を書くときには、最初から逐語的な文字列を考えることさえありません。 .NET regexesをテストするために、JavaScript regexバリデータを使用してはいけません。正規表現は、プラットフォーム/言語/ライブラリに応じてさまざまな味があります。 .NET regexesを検証するには、.NETを使用する必要があります。 [LinqPad](http://www.linqpad.net/)にお試しください。 –

答えて

1

他にもいくつか問題があります。 ?

そのこれは動作するはず今

^='?[^/\[]*]*'?!{1}[A-Z]+[0-9]+$ 
+0

いいえ、そうではありません。 '' @ '^ ='?[^/\ [] *] * '?! {1} [A-Z] + [0-9] + $ ")'はfalseです。 –

+0

"="有効な文字列は "= Sheet1!A1"が見つかりませんでした。 – meetjaydeep

+0

シート名に*文字が含まれていれば、上記は正しくキャッチされません。ここでは、それを得るための更新された正規表現があります '^ = '?[^/\ [] \ *] *' ?! {1} [AZ] + [0-9] + $' – chrsmrtn

0

作業: を=(\がs | \ワット)+ [A-ZA-Z] + \ D +

3
Regex re = new Regex(@"^=('?[^']+'?|[^!]+)![A-Z]+[0-9]+$"); 
bool isOk = re.IsMatch("=Sheet1!A1"); 

変更! [^!]には、シートの名前には不要な文字を入力します。

='<anything>'!XNまたは=<anything>!XNの形式と一致します(Xは少なくとも1つの大文字で、Nは少なくとも1桁です)。

編集: 私はOPの開始時に=文字を望んでいるか、いない場合は(オリジナルのポストはそれを持っていた)ことを確認していません。そうでない場合は、正規表現の先頭から=文字を削除します。

+0

特にあなたのために試しました両方の式とそれは 'true'と評価されます。 彼の投稿は今編集されています。彼は、最初から平等キャラクターを削除しました。意図したものかどうかは分かりません。 –

+0

ああ、心配しないでください。大丈夫だよ。 +1。どういうわけか私は正しく貼り付けることができませんでした:( –