文字列を取り、SQL サーバーでフィールド名として有効にするために区切る必要があるかどうかを判断する正規表現を VB.NET で記述したいと考えています。
たとえば、myField
は有効ですが (コンテキストの例: SELECT myField from myTable
)、そうでmy field
はなく、角かっこ ( ) で区切る必要がありますselect [my field] from myTable
。
正規表現は、次のいずれかを含む文字列と一致する必要があります。
- 空白文字
- 、、を除く特殊文字 (
!"£$%^
など)_
@
#
- 数字で始まる文字列または
@
- その他のフィールド命名規則 (SQL 予約キーワードを含まず、別の関数がそれを処理します)
私の現在の正規表現パターンは です[^A-Za-z]+
。これは、アルファベット以外の文字と一致するため、ほぼ機能しますが、やなどの名前と不必要に一致しmy_field
ますfield0
正規表現の回答が推奨されますが、他のアプローチも問題ありません