Javaパッケージ名を検証するために、javascriptで正規表現を使用したいと考えています。JavascriptでJavaパッケージ名を検証する正規表現
それを行うための最も簡単な方法は、単語やドットのリストを一致させることですので、私は、この正規表現を実装している:
(^(?:[a-z_]+(?:\d*[a-zA-Z_]*)*)(?:\.[a-z_]+(?:\d*[a-zA-Z_]*)*)*$)
この正規表現次のことを確認してください。
- をパッケージ名ことができます文字、数字、ドット、アンダースコアのみで構成されます。
- パッケージ名は常に(またはundersccore付き)の単語でを起動する必要がありますが、決して数字を持つか、パッケージ名が、必要に応じてがで作られたパターンの配列を含むことができ、ドット
- と:ドットで始まり、数字で始まらない英字とアンダースコアで始まる単語が続きます。
- パッケージ名は、ドット文字以外で常にで終わらなければなりません。
:パッケージ名は、慣例により小文字でを起動する必要がありますcom com.test com.test.regex _com._123 comTest.regEx
- は
例えばこの正規表現マッチこれらのパッケージ名を(Javaのは、彼らが推奨されていても、大文字開始パッケージ名を許可します)
そして、それはこれらのパッケージ名をdoesnt'match:これは正しいです
123
com.
.com
test.123com
test.123_
が、 1つの単語がJava予約語の場合は、すべてのパッケージ名を無効にする必要があるため、私の目的には十分ではありません。
のは、一例として、このパッケージの名前を見てみましょう:このパッケージ名は私の正規表現で有効なものとして認識されている
com.test.package
が、言葉package
は、Javaの予約語であり、それは、Javaのために使用することはできませんパッケージ名。
有効なパッケージ名を指定できます
com.test.packageTest
com.test.testpackage
単語package
は別の単語のサブすることができますが、それは、ドット間の単一の単語にすることはできません。
正規表現を修正して、Java予約語の使用を避けて、これらの規則で単一単語の検証を追加するにはどうすればよいですか?
ありがとうございました
http://stackoverflow.com/questions/5205339/regular-expression-matching-fully-qualified-class-namesがあなたを助けます –
あなたはおそらくネガティブな先読みを使用するつもりですJavaのすべてのキーワードをカバーします。私は、文字列演算と正規表現の組み合わせを使用することをお勧めします。あなたの現在の正規表現はそのままにして、点で分割し、各部分がキーワードでないことを確認してください。 –
ええ、それは練習の解決です:すべての用語が予約語であるかどうか確認してください。おそらく、このチェックを正規表現で直接行うのは複雑すぎるでしょう。 –