2017-11-28 1 views
1

javascriptでmatch()を使用して正規表現で画像のURLから文字列を取得したいとします。私はChromeのバージョン62でそれをテストし、それは素晴らしいですが、より低いバージョン(例えば58)で動作しません!問題はどこから来るか。これは、コードの私の2行です:。。私のクロームVにChromeの正規表現に関する問題

// cloneURL = "/assets/images/bonhommeneige.png" 
var cloneName = cloneURL.match('(?<=images/)(.*?)(?=.png)'); 

62それは私を与える「bonhommeneige」が、クロームV 58で私が持っているエラー:無効な正規表現。私の正規表現に何が間違っていますか?あなたがイメージ名を取得したい場合は

+1

クロムv58では正の検索ビハインドはサポートされていません。あなたの正規表現を変更してください、とにかくlookbehindなしでそれを行うことができます。 '(?:images /)(.*?)(?=.png)' – dfsq

答えて

3

正の後読みはクロムV58ではサポートされていません。あなたの正規表現を変更してください、とにかくlookbehindなしでそれを行うことができます。あなただけ(と\..をエスケープすることを忘れないでください)./最後と最後の間の値が必要な場合は

var cloneURL = "/assets/images/bonhommeneige.png" 
 
var cloneName = cloneURL.match('(?:images/)(.*?)(?=.png)'); 
 

 
console.log(cloneName);

1

、あなたは以下の方法を使用して試すことができます:

// Method 1 
 

 
let cloneUrl = "/assets/images/bonhommeneige.png"; 
 
let imageName = cloneUrl.substring (
 
    cloneUrl.lastIndexOf("/") + 1, 
 
    cloneUrl.lastIndexOf(".") 
 
); 
 

 
console.log(imageName); 
 

 
// Method 2 
 

 
let matches = cloneUrl.match(/(?:images\/)(\S+)(?:\.png)/); 
 

 
console.log(matches); // Get the [1] index

1

:たとえば、あなたは、非キャプチャグループの代わりに(?:images/)を使用することもできます。

cloneURL = "/assets/images/bonhommeneige.png" 
 

 
console.log(cloneURL.match(/[^/]+(?=\.)/)[0]) 
 

 
console.log(cloneURL.match(/([^/]+)\./)[1])