4

「テーブル 2」またはそのテーブル番号 (場合によっては 2 桁) を変数に取得しようとしています。なぜこれが戻ってくるのnullですか?

 var productText = '25-08-12 Boat Cruise (Table 2)';
 var rgx = /^\(\)$/;
 var newText = productText.match(rgx);
 alert(newText);
4

3 に答える 3

7

代わりに次を使用します。

var rgx = /\(([^)]+)\)/;
var match = productText.match(rgx);
var newText = match && match[1];
// newText's value will be "Table 2" if there is match; null otherwise

がある場合/^\(\)$/、実際には文字列と一致"()"させようとしていますが、それ以上でもそれ以下でもありません。代わりに、テキスト a の任意の場所に一致し、(それと次の間のすべてを)キャプチャ グループに保存し([^)]+)て、後でキャプチャ グループを参照できるようにする必要がありますmatch[1]

番号だけが必要な場合は、 を使用します/\(Table (\d+)\)/

于 2012-09-22T23:45:16.427 に答える
0
var rgx = /\((.*)\)/

テーブル番号をグループにキャプチャします。

あなたの正規表現は現在言っています

'文字列の最初(^)と最後($)に()を付けてください'。

于 2012-09-22T23:52:30.850 に答える
0

^ は行頭を意味し、

$ は行末を意味します。

また、 内のテキストと一致するものが必要です()。たとえば、次のようになります。.*

それが指摘されていると、/^\(\)$/にのみ一致し()ます。

次に、実際の例は次のようになります。

var productText = '25-08-12 Boat Cruise (Table 2)';
var rgx = /\(.*\)/;
var newText = productText.match(rgx)[0];
newText = newText.replace('(','');
newText = newText.replace(')','');
alert(newText);

必要なものを確認したらjQuery のデータを使用することをお勧めします。

于 2012-09-23T00:20:05.130 に答える