質問: 正規表現 エクセルの名前定義に使える文字列の正規表現を書きたいです、 1.先頭に「数字」、または「R数字」、「C数字」で始まらないこと 2.スベース(全角半角)、タブ、改行など「$s」で表現できる文字列を含まないこと 3.アンダーライン(全角半角)、円マーク(全角半角)以外の符号を含まないこと 調べて見たら: 1.→ /^(?!(\d|(R|C)\d))/i 2.→ (?!.*\s).+$ 3.→ わからない 教えていただきたいこと: ・1,2の書き方は正しいですか ・3の書き方 ・1,2,3を「且つ」の関係で繋いた最終正規表現 よろしくお願い致します。
回答: 完全な正規表現を記述するのは諦めた方がいいと思います。 数式で名前を定義し使用する - 名前の構文規則についてに説明があります。 > > * **有効な文字** 名前の最初の文字には、文字、下線 (_)、円記号 (¥) しか使用できません。最初の文字以外には、文字、数値、ピリオド、および下線を使用できます。 > > ヒント: 大文字と小文字の "C"、"c"、"R"、"r" は予約されているため、定義された名前として使用することはできません。これらの文字を、[名前] または [移動先] テキスト ボックスに入力すると、現在選択されているセルの行または列が選択されます。 > * **セル参照と競合する名前は不可** Z$100 や R1C1 など、セル参照と競合する名前は使用できません。 > * **スペースは不可** スペースは名前の一部として使用できません。単語の区切りには、下線 (_) やピリオド (.) を使用してください (Sales_Tax、First.Quarter など)。 > * **名前の文字数** 名前に使用できる文字数は、255 文字までです。 > * **大文字と小文字の区別** 名前には大文字と小文字の両方を使用することができます。名前の大文字と小文字は区別されません。たとえば、ブックに "Sales" という名前を付け、同じブックに "SALES" という名前を付け直すと、一意の名前を付けるように求めるメッセージが表示されます。 > > > という条件ですが「文字」が何を認めるのか曖昧です。実際問題、ひらがなや漢字は認められますが、その範囲を特定し正規表現で記述するのは容易ではありません。 「セル参照と競合する名前は不可」も結構大変です。`ABC1`はダメですが`XYZ1`はOKでした(右上のセル名が`XFD1`のため)。 VBAの正規表現エンジンのドキュメントは正規表現の構文にあります。