1

次の形式に一致させようとしています: < 任意の数の a ~ z ~ a ~ z 文字 >

使用する"^<\w*>$";

コードは次のとおりです。

var predefinedListRegEx = "^<\w*>$";
var dataFill = "<aaaa>"; 
var predefined_List = dataFill.match(predefinedListRegEx);

if (predefined_List != null) {
        //MATCHES THE CONDITION
    }

それを機能させるようには見えません..どこが間違っていますか?

また、一致した文字列を取得したら、<> であったものを減算し、それを使用して変数を参照します。

var vacba = 0 

例えば

そして、vacba = 10;

4

3 に答える 3

4

ここでの正規表現は、正規表現ではなく文字列です。試す:

var predefinedListRegEx = /^<\w*>$/;

何らかの理由で、によって正規表現にキャストされた文字列を使用する必要がある場合はmatch、スラッシュをエスケープする必要があります。

var predefinedListRegEx = "^<\\w*>$";

より多くのリクエストであなたの編集に応えて

括弧で囲まれた一致グループを使用します。

var predefinedListRegEx = /^<(\w*)>$/;
var dataFill = "<aaaa>"; 
var predefined_List = dataFill.match(predefinedListRegEx);

これはpredefinedListRegEx次のような配列に設定されます: ["<aaaa>", "aaaa"].

predefined_List[1]文字列 inを変数名として使用したい場合(たとえば、 to do aaaa = 10)、おそらく を使用する必要はありませんevalwindow[predefined_List[1]]変数がグローバルの場合は、すべてのグローバル変数がオブジェクトのプロパティであるため、単純に使用できwindowます。それがグローバルでない場合 (または、きちんとした JavaScript プログラマーになりたいだけで、グローバル名前空間を使いすぎたくない場合)、 のような値を保持するオブジェクトの参照プロパティを使用するのが最善ですvariablesNamedInMyRegexes[predefined_List[1]] = 10;

于 2012-08-28T13:23:16.433 に答える
3

string を正規表現データのコンテナーとして使用します。match で使用すると暗黙的に実際の正規表現に変換されますが、文字列リテラルで特別な意味を持つ記号を正しく引用符で囲む必要があります (この場合は\.

var predefinedListRegEx = "^<\\w*>$";

さらに、各呼び出しで暗黙的な変換を行うとパフォーマンスが低下するため、apsillers で言及されているように、実際のコンストラクターを使用する必要があります。

var predefinedListRegEx = /^<\w*>$/;
于 2012-08-28T13:27:16.640 に答える
1

次の正規表現を使用します。

result = dataFill.match(/<(\w*)>/);

これにより、キャプチャ グループの一致とコンテンツが 2 番目の値として返されます。

[]これで、次のような表記を使用して変数名として使用できます。

window[result[1]] = "whatever";

これにより、グローバル変数が作成されます。もちろん、グローバル オブジェクトの代わりに独自の名前空間を使用することをお勧めします。

于 2012-08-28T13:35:06.973 に答える