2016-10-06 19 views
0

javascriptの最後の2つのスラッシュまたは最後の2つの同じ文字の間の文字列を取得する方法は?正規表現で最後の2つのスラッシュまたは最後の2つの同じ文字の間の文字列を取得しますか?

使用正規表現以下に...

私の正規表現パターンをは、いくつかの類似した質問がそうであります分割が、私は唯一の答えは使用スプリットで見つけることができない、それは私が何かを欠場か一致しませんか?

私はこのような結果が得られることを望んでいた、それを作る方法は?それは、出力["s", index: 7, input: "https://stackoverflow.com/a/b/c/s/"]あなたが期待されますよう

/[^/]*(?=\/$)/ 

:あなたはこの正規表現を使用することができます

var str = '/a/b/c/s/'; 
var regexPattern = /([^/]*)\/$/; 
str = regexPattern.exec(str); 
console.log(str); // ["s/", "s"] 
if (str == 's') { 
    console.log(true) 
} 

https://jsfiddle.net/30bjt5ew/

+0

返事が、ポイントに感謝正規表現が一致していないが、そうでない場合はこの 'のようなものを返します[ 'S'、インデックスを:.....]' strの==「sの 'より''は仕事になります – user1775888

+0

いいえ私はこれをサーバー側で実行しましたが、あなたと同じ結果を試しました – user1775888

+0

'if(str [1] == 's')でhttps://jsfiddle.net/30bjt5ew/1/を参照してください{ '。私はChromeで「真実」を得る。 –

答えて

2

['s', index: .., input: ...] 

正規表現。

[^/]* # any char that is not/
(?=\/$) # Look foward for a/and the end of string 

jsfiddle

+1

これはすばらしい解決策ですが、私は自分自身に提案するつもりでした。私は自分の答えに含めることを提案しました。 「最後の2つのスラッシュの間」は、最後のスラッシュが実際にストリングの最後にあることを示していません。だから、最後の/の後のスラッシュでない文字の量(0以上)にマッチする量子を追加するべきです。提示された仕様に基づいて、 "a/b/c"は例えばbと一致するはずです。今の正規表現では、それは何も一致しません。 (あなたは/を最後の文字にすることを意図しているかどうかをOPに尋ねることができます。そうなら、あなたは正しいです。) –

+0

この作品!!おかげで説明のため – user1775888

+0

@JosephMyersの提案に感謝!それは今でもOKです。nullが正しいフォーマット文字列でないことを意味するかどうかをテストすることができます – user1775888

関連する問題