0

[a-zA-Z0-9\-.,:+*()=\'&_] という正規表現を使用していますが、次のようなエラーが発生します:「unterminated character class' error in this expression」:

デモコード:

Ext.getCmp('field2').addListener({
        beforequery: function (e) {
            if (e.query && e.query.indexOf('?') != -1) {
                var temp = '';
                for(var i=0;i<e.query.length;i++){
                    temp = temp + '['+e.query[i]+ ']';
                }
                e.cancel = true;
                var query = new RegExp(String.format('^{0}',temp.replace(/\?/g, 'a-zA-Z0-9\.,:\+*()=\'&_-\\')));
                this.expand();
                this.store.clearFilter(true);
                this.store.filter(this.displayField, query);
            }
        }
    });

エラー:

1.主にバックスラッシュを使用して、誰かがこれの何が問題なのか教えてください。

2.コンボボックスに目的の文字を入力すると、それらは自動的に選択されます..新しい文字を入力したい場合は、横の矢印を押す必要があります。そうしないと、残りの文字が削除されます...

もう一度ありがとう、

ラージ

4

3 に答える 3

1

キャラクタークラスのいくつかのアイテムをエスケープする必要があると思います. バックスラッシュ、アスタリスク、プラス、括弧、ピリオドのように。

このようなもの[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]

正規表現の特殊文字[\^$.|?*+(){}にバックスラッシュを追加すると、特殊な意味が抑制され、文字どおりに使用できるようになります。

http://www.regular-expressions.info/reference.html

于 2012-04-12T04:54:38.540 に答える
0

正規表現では、エスケープする必要がある 11 文字があります: 開き角括弧 [、バックスラッシュ \、キャレット ^、ドル記号 $、ピリオドまたはドット .、垂直バーまたはパイプ記号 |、疑問符 ?、アスタリスクまたはアスタリスク *、プラス記号 +、開き丸括弧 (および閉じ丸括弧)。

于 2012-04-12T04:59:15.037 に答える
0

正規表現の一部の文字をエスケープする必要があります。したがって、次のようになります。

var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/;  // Note the backslashes

括弧、プラス記号、アスタリスク、およびバックスラッシュは、正規表現で特別な意味を持つ多くの文字の一部です。文字どおりに含めるには、バックスラッシュでエスケープする必要があります。

于 2012-04-12T05:02:28.383 に答える