1

仍然在这里学习正则表达式,但我需要一点帮助。

我有这个字符串 assets/BigBlueSomething_tn.jpg

我需要匹配这个 BigBlueSomething

我得到的最接近的是这个 `[^\/][a-zA-Z]+_

问题是我一直在匹配下划线,我[^\/][a-zA-Z]+[^_]在其他几个线程的建议下尝试过这个,但无济于事。

我正在用 javascript 编写,我相信有些正则表达式的东西在该语言中不起作用。

4

3 回答 3

1

这应该给你你需要的东西:

var str = 'assets/BigBlueSomething_tn.jpg';
var match = str.split('/')[1].match(/[a-z]+/i)[0];

编辑:我使用split了因为否则你必须循环匹配来提取你需要的东西。match不捕获组。

'assets/BigBlueSomething_tn.jpg'
       -^---------------------^- // .split('/')[1]
       -^--------------^- // .match(/[a-z]+/i)[0]

[a-z] // match any character from a to z
+ // at least one time
/i // case-insensitive to match A-Z as well
于 2013-04-05T23:17:19.583 回答
1

试试这个:

var text = "assets/BigBlueSomething_tn.jpg";
var matches = /assets\/(.+?)_tn.jpg/gi.exec(text);
if(matches && matches[1]) {
    var str = matches[1];
}
于 2013-04-05T23:25:23.523 回答
0
/^(?:.*\/)?([0-9a-z]+)(?:_[a-z]+)?\.(?:jpg|jpeg|png|gif)$/i

此正则表达式匹配以下字符串中的“BigBlueSomething”:

'assets/BigBlueSomething_tn.jpg' 
'BigBlueSomething_tn.jpg'
'BigBlueSomething_TN.jPeG'
'dir1/dir2/BigBlueSomething_tn.gif'
'BigBlueSomething.png'
'BigBlueSomething_thumb.png'
'directory/BigBlueSomething_thumb.JPEG'

看到这个小提琴

于 2013-04-05T23:24:30.380 回答