1
var regExp=new RegExp('\[:bg\]([A-Za-z\-\s]+)', 'g');
var text='something [:bg]text1[:en]text2 % something';
console.log(text.match(regExp));

このフラグメントは文字列"text1"を返すと思いますが、次の配列を返します:[":bg"、 ":en"]

私は何が間違っているのですか?

4

1 に答える 1

4

正規表現構文を使用して正規表現を作成します。

var regExp = /\[:bg\]([A-Za-z\-\s]+)/g;

それ以外の場合は、円記号を2倍にする必要があります。文字列から始めるときは、文字列自体が文字列定数構文に埋め込まれたメタ文字の規則に従ってJavaScriptによって解釈されるという事実を考慮する必要があります。RegExp()そうして初めて、コンストラクターによって正規表現として再解釈されます。したがって、文字列解析はバックスラッシュを「食い尽くし」、正規表現は意図したものとは異なります。

編集— @Rocketがコメントで指摘しているように、「g」修飾子は必要な場合と不要な場合があります。

于 2012-08-09T14:12:21.030 に答える