如何查找具有部分固定模式的子字符串

时间:2016-11-30 20:44:40

标签: javascript regex

我有一个字符串var str = aklsjdfoiueori;ja;lkdsjf;lasdjf_something.js;akdfjl;kj

我正在寻找.js前面的任何内容,但是在下划线之前。所以我想做/_[A-Za-z].js/之类的事情,但是str.match(pattern)会返回null。

输出something.js需要什么?

4 个答案:

答案 0 :(得分:1)

您可以使用:

var str = 'aklsjdfoiueori;ja;lkdsjf;lasdjf_something.js;akdfjl;kj';

var repl = str.replace(/_\w*\.js;.*/, '')
//=> aklsjdfoiueori;ja;lkdsjf;lasdjf

_\w*\.js;.*会找到_后跟0个或更多字词和.js以及之后的任何内容。

如果您需要something.js,请使用捕获组:

<强> .replace:

var jsname = str.replace(/.*_(\w*\.js);.*/, '$1')
//=> something.js

<强> .match:

var jsname = str.match(/_(\w*\.js)/)[1];
//=> something.js

答案 1 :(得分:0)

var str = 'aklsjdfoiueori;ja;lkdsjf;lasdjf_something.js;akdfjl;kj'
str.replace(/.*_(.*).js.*/,'$1') // or str.match(/.*_(.*).js.*/)[1]

这将返回something,这是你想要的吗?

答案 2 :(得分:0)

你的模式应该是

/_[A-Za-z]+.js/

答案 3 :(得分:0)

如果您不想包含下划线,我会使用此

/[^_]+\.js/

基本上,匹配一系列不是下划线的字符,直到你点击.js