2017-03-22 13 views
-2

連続する3つのチャーターが一致する場合はtrueを返す正規表現が必要です。 たとえば/[money]{3,}/g これは、mon、one、neyに対してtrueを返し、mnyに対してfalseを返します。サブパターンの一致の正規表現

+0

を使用し、問題は何ですか?関数を書きますか –

+0

なぜこの/(?:mon | one | ney)/ g'できませんか? – abhishekkannojia

+3

ここで正規表現を使用するのは無意味です(そして動的にしたい場合は混乱します)。代わりにindexOf( 'mon')!== -1を使用してください。 – ryanlutgen

答えて

0

私は正規表現を使用しません。indexOfを使用しないでください。コードは少なく、読みやすくなります。

ここ"money".indexOf("mon")>-1

のようなものすべて記載されている例とデモ、:

let values = ["mon","one", "ney", "mny"]; 
 
let shouldMatch = "money"; 
 

 
for (let idx = 0; idx<values.length;idx++){ 
 
    console.info(values[idx], "=", shouldMatch.indexOf(values[idx])>-1); 
 
}

しかしあなたは正規表現を使用したい場合は、あなたがそれを使用することができますこのように:
(ところで:これはのみ上記の例を記述するための "空想" の方法です)

let values = ["mon","one", "ney", "mny"]; 
 

 

 
function matcher(word, value){ 
 
    return (new RegExp(value)).test(word); 
 
} 
 

 
for (let idx = 0; idx<values.length;idx++){ 
 
    console.info(values[idx], "=", matcher("money", values[idx])); 
 
}

コードは、基本的には:

は新しい正規表現EXPを作成します。 。 (new RegExp("mon"))/mon/と同じ)とし、単に「パターン」が単語"money"(new RegExp("mon")).test("money")と一致する場合、これはtrueを返します。ここで

すべてお金(サブ)に収まるならば、我々がチェックされ、周りの -pattern になっています。

0

正規表現は文字列の検索として機能します。アプリケーションでは、ベース文字列を取り、多くのORと先読み/背後の動的な正規表現を構築する必要があります。あなたのアプリケーションのために、indexOf

function stringContainsSubstr(sourceStr, subStr) { 
    return sourceStr.indexOf(subStr) !== -1; 
} 

var exampleStrs = ["mon", "one", "ney", "mny"]; 
var str = "money"; 

for (var i = 0; i < exampleStrs.length; i++) { 
    console.log(stringContainsSubstr(str, exampleStrs[i])); 
} 

http://plnkr.co/edit/2mtV1NeD1MYta5v49oWr