1

exec関数でJavaScript正規表現を使用しようとしており、グループに一致するものを取得したいと考えています。なぜ一致しないのか理解できません。

これが私のコードです:

var elementClass="validate[required]"
var myRegexp = /validate\\[(*)\\]/g;
var match = myRegexp.exec(elementClass);

一致は毎回nullです。理由がわかりません。「必須」になっているはずです。

助けてくれてありがとう!

4

2 に答える 2

3

代わりにこれを使用してください:

var myRegexp = /validate\[(.*)\]/;

まず、エスケープするために必要なバックスラッシュは1つだけです。それ以外の場合は、文字通りのバックスラッシュの後に、エスケープしようとしたものの特別な意味を検索します。

第二に、*単に「最後のもののゼロ以上」を意味します。この場合、そこには何もないので意味がありません。.「何でも」(まあ、ほとんど)を.*意味するので、「何でも何でも」を意味します。

最後にg、特に結果の一部をキャプチャしようとしている場合は、フラグは不要です。

于 2013-03-03T00:06:37.967 に答える
2

1)あなたは多くのスラッシュをしなければなりません

var myRegexp = /validate\[(.*?)\]/g;

2)角かっこのみでパーツを一致させたい場合は、グループを使用する必要があります

var result = match[1];
于 2013-03-03T00:06:24.267 に答える