JavaScript正则表达式匹配

abi*_*964 3 javascript regex

我有一些变数

var jdbcurl="jdbc:oracle:thin:%2F%2Finnova:1521%3BServiceName%3Dorcl%3BMaxPooledStatements%3D20%3BCatalogOptions%3D0%3BBatchPerformanceWorkaround%3Dtrue"

alert(jdbcurl.match(/:[\d]+/));    //gives me :1521
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到jdbc:oracle:thin,innova,1521orcl出来的jdbcurl变种?

更新

你可以在这里试验(如果需要的话)

Zac*_*urt 10

var jdbcurl="jdbc:oracle:thin:%2F%2Finnova:1521%3BServiceName%3Dorcl%3BMaxPooledStatements%3D20%3BCatalogOptions%3D0%3BBatchPerformanceWorkaround%3Dtrue"
var myregex = /([a-z:]+):%2F%2F([a-z]+):(\d+)%3BServiceName%3D([a-z]+)%3BMaxPooledStatements%3D20%3BCatalogOptions%3D0%3BBatchPerformanceWorkaround%3Dtrue/
var matches = myregex.exec(jdbcurl);
// jdbc:oracle:thin is in matches[1], innova is in matches[2], 1521 is in matches[3], and orcl is in matches[4]
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你必须解析几个网址,你也可以尝试在regexp维护期间获得更好的网址可读性:

var jdburl = unescape("jdbc:oracle:thin:%2F%2Finnova:1521%3BServiceName%3Dorcl%3BMaxPooledStatements%3D20%3BCatalogOptions%3D0%3BBatchPerformanceWorkaround%3Dtrue");

var myRegExp = new Regexp('([a-z:]+)://(\\w+):(\\d+);ServiceName=(\\w+);');

var matches = myRegExp.exec(jdburl);
Run Code Online (Sandbox Code Playgroud)