我有一个字符串var str = aklsjdfoiueori;ja;lkdsjf;lasdjf_something.js;akdfjl;kj
我正在寻找.js
前面的任何内容,但是在下划线之前。所以我想做/_[A-Za-z].js/
之类的事情,但是str.match(pattern)
会返回null。
输出something.js
需要什么?
答案 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