2016-12-23 4 views
0

正規表現ではなくアスタリスク(*)のワイルドカードをサポートしたいだけです。検索時にアスタリスクワイルドカードを使用するには?

これは私のコードです:

for example : checkNames[i] = "Number of ongoing MS sessions" 


var checkName = checkNames[i].split("*").join(".*"); 
supportRegExp(dataSource[j].ColumnName, checkName, validatedList,dataSource[j]); 

、これが私のsupportRegExp機能である:

function supportRegExp(arrayElem, checkName, validatedList, elem) { 
    var regexpArr = checkName 
     .replace(/\t/g, '\n') 
     .split("\n") 
     .map(function (item) { 
      return "^" + item + "$"; 
     }); 
    var regexp = new RegExp(regexpArr, 'i'); 
    $my.isMatched = regexp.test(arrayElem) 
    if ($my.isMatched) { 
     validatedList.push(elem); //elem: my object { inside ColumnName, DisplayName } 
     AddValidatedList(arrayElem); //arrayElem : elem.ColumnName or elem.DisplayName bla bla. 
    } 
} 

これは作品です。私は "num *"と来る結果を書いています。そして、 "num | m"と来る結果を書いています。私はregexpを使っているので、 '*'記号だけをサポートしたいのです。

例:num *を書いているとき、結果が出てきますが、num | mが結果にならないと書いています。私はアスタリスク記号をサポートしたいからです。

どうすればいいですか?

ご了承ください。

+0

パターンにリテラル '*'シンボルを指定できるようにしたいということですか?あなたは何らかの方法でそれをエスケープする必要があります。正規表現は '' \ ''を使用し、ルアは '%'を使用し、MS Officeは '〜'を使用します。任意のものを使用してください:) –

+1

@WiktorStribiżew '*'を '。*'に変換してグロブとして扱うようにしたいが、他の正規表現のメタキャラクタをすべて無視したいと思うようだ。 – Phylogenesis

+0

@Phylogenesis:質問を編集してください。 –

答えて

1

this questionから重く借りて、私は次のようなものの後にあると思う:

var checkName = 
    checkNames[i] 
     .split("*") 
     .map(function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }) 
     .join(".*"); 

これは.*に戻って参加する準備ができて*文字、上の分割後に正規表現の各部分をエスケープします。

関連する問題