0

私がやろうとしていること: 私は datatables ( http://www.datatables.net/ ) を使用しています。これは、html テーブル用の素晴らしい jQuery プラグインです。正規表現を使用してオプションのリストをフィルタリングできる検索フィールドもあり、うまく機能します。この検索: (^sweden$)|(^united Kingdom$) はリストをフィルタリングし、これら 2 つの国に関連するレコードのみを表示します。しかし、ユーザーが正規表現を知る必要はないと思うので、ユーザーがスウェーデン、イギリスを入力できるようにし、キーを押して非表示フィールド内の正規表現検索に変換できるようにしようとしています:)から | までのリストを取得します。偶発的な二重コンマ (,,) または複数のスペースは削除されますが、各国をキャプチャして (^$) を出力に追加する方法については少し行き詰まっています。

コード:

var countryFilterUserInput = $("#colCountry_filterUser").val();
var countryFilterUserInput = countryFilterUserInput.replace(/[, ]* *,+ *([^((,| )+$)])/g,"|$1").replace(/[, ]*$/,'');
console.log(countryFilterUserInput);


入力:sweden, united kingdom

私にくれますsweden|united kingdom

私はそれを作ろうとしています:(^sweden$)|(^united kingdom$)

4

2 に答える 2

2

すべてのオプションで開始文字と終了文字を追加する必要がないように、非キャプチャ グループを使用できます。これを試して:

var countries = 'sweden, united kingdom'.split(/,\s?/);
var regex = new RegExp('^(?:'+ countries.join('|') +')$');
于 2013-03-12T07:37:04.400 に答える
0

コンマを単純に置き換えない理由:

var regex = "(^"+ countryFilterUserInput.replace(/\s*,\s*/g, "$)|(^")+"$)";
于 2013-03-12T07:37:12.263 に答える