2016-09-16 6 views
0

URLに2桁の文字列を検索しようとしています。たとえば、次のようにランダムな文字列を指定でき正規表現javascript aa_bbを確認する方法

if (window.location.href.indexOf("ff_gg") > -1) { 
    // 
} else ... 

しかしFF _ GG

www.abc.com/ff_gg/abc 

私はそれを確認することができます。 regexを使ってURLからffggを変数として保存するには? ffおよびggは、_で区切られます。

+2

(\ D {2} _ \ D {2})/ ''十分/ですか? – raina77ow

+0

ffとggの両方が数字ですか? –

+0

これらは手紙 – fernando

答えて

3

あなたはString#searchを使用することができます正規表現を使用して、String#indexOfの代わりに。またはRegExp#test

また、表現を理解するためにRegExpを参照してください。

const text = 'www.abc.com/ff_gg/abc'; 
 
const rx = /\/[a-z]{2}_[a-z]{2}\//i; 
 
if (text.search(rx) > -1) { 
 
    console.log('found'); 
 
} else { 
 
    console.log('not found'); 
 
} 
 
if (rx.test(text)) { 
 
    console.log('found'); 
 
} else { 
 
    console.log('not found'); 
 
}

あなたがString#matchとキャプチャ、またはRegExp#execに類似した正規表現を使用することができます。

String#splitまたはString#sliceで文字列操作を使用することもできます。

ご覧のとおり、いくつかのオプション(さらに言及していないものもあります)がありますが、今はそれぞれの例を作成する時間がありません。

const text = 'www.abc.com/ff_gg/abc'; 
 
const match = text.match(/\/([a-z]{2})_([a-z]{2})\//i); 
 
if (match) { 
 
    console.log(match); 
 
}

const text = 'www.abc.com/ff_gg/abc'; 
 
const rx = /\/[a-z]{2}_[a-z]{2}\//i; 
 
const index = text.search(rx); 
 
if (index > -1) { 
 
    console.log(text.slice(index + 1, index + 1 + 5).split('_')); 
 
}

+0

ありがとうございました!これは素晴らしいです – fernando

+0

検索を使用しているときに-1より大きい値をチェックする必要がある理由を説明できますか? –

+1

['String#search:正規表現と指定された文字列との最初の一致のインデックスを返します。見つからなければ、-1.'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/search#Return_value) – Xotic750

1
([a-zA-Z]{2})_([a-zA-Z]{2}) 

2で区切られたキャプチャグループは、正規表現のトリックを行うことができます。

次にあなたがRegExpオブジェクトを作ることができますJavaScriptでマッチしたグループ

demo

1

を返します誰match()を使用しています。 RegExpオブジェクトの詳細については、次の例では、動作するはずhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

参照してください。ここでは

var url = "www.abc.com/ff_gg/abc"; 
 
var reg = new RegExp("([a-zA-Z]{2})_([a-zA-Z]{2})"); 
 

 
if (reg.test(url)) { 
 
    var matches = url.match(reg); 
 
    var ff = matches[1]; 
 
    var gg = matches[2]; 
 
    
 
    console.log("group1: " + ff); 
 
    console.log("group2: " + gg); 
 
    console.log("do something"); 
 
}

も正規表現の例である:http://regexr.com/3e8a7

+1

'\ w:アンダースコアを含む基本ラテンアルファベットの任意の英数字と一致します。 [A-ZA-Z0-9 _]と同等です。 – Xotic750

+0

ありがとうございます。私は[a-zA-Z]に変更します。 –

関連する問題