我遇到一个案例,我需要使用正则表达式(/ ^' searchString' /)的开头拆分给定的字符串,这不起作用,如
"token=123412acascasdaASDFADS".split('token=')
这里我想提取令牌值,但可能还有一些其他可能的参数,例如
"reset_token=SDFDFdsf12313ADADF".split('token=')
这里它还用' token ='分割字符串,这就是为什么我需要使用一些正则表达式来拆分字符串,该正则表达式将字符串拆分为以给定字符串开头的字符串。
谢谢..
EDITED 伙计们感谢您的宝贵回复,可以使用 / \ btoken = / 来解决此问题但是如果'令牌='它不起作用作为字符串存储到变量中,如
sParam = 'token=';
"token=123412acascasdaASDFADS".split(/\bsParam/);
这不起作用。
答案 0 :(得分:1)
您可以在带有字边界的拆分中使用正则表达式:
"token=123412acascasdaASDFADS".split(/\btoken=/)
如果token
存储在变量中,请使用RegExp
构造函数:
var sParam = "token";
var re = new RegExp("\\b" + sParam + "=");
然后使用它:
var tokens = "token=123412acascasdaASDFADS".split( re );
答案 1 :(得分:1)
这是\b
锚点的用例:
\btoken=
确保token
之前没有其他字字符(单词字符为[a-zA-Z0-9_]
)
答案 2 :(得分:1)
您可以尝试使用String#match()
功能并从索引1获取匹配的组
示例代码
var re = /^token=(.*)$/;
var str = 'token=123412acascasdaASDFADS';
console.log('token=123412acascasdaASDFADS'.match('/^token=(.*)$/')[1]);
输出:
123412acascasdaASDFADS
如果token
是动态的,请使用 RegExp
var token='token=';
var re = new RegExp("^"+token+"(.*)$");
var str = 'token=123412acascasdaASDFADS';
console.log(str.match(re)[1]);
答案 3 :(得分:1)
您需要使用&
参数分隔符拆分字符串,然后循环遍历这些参数:
var token;
$.each(params.split('&'), function() {
var parval = this.split('=');
if (parval[0] == "token") {
token = parval[1];
return false; // end the $.each loop
}
});
如果您只使用token=
作为split
分隔符,则会在值中包含其后的所有其他参数。
答案 4 :(得分:1)
目前尚不清楚您需要什么,但这可能是一个合作的想法?
var reqstr = "token=12345&reset_token=SDFDFdsf12313ADADF&someval=foo"
.split(/[&=]/)
,req = [];
reqstr.map( function (v, i) {
if (i%2==0) {
var o = {};
o[/token/i.test(v) ? 'token' : v] = reqstr[i+1];
this.push(o);
} return v
}, req);
/* => req now contains:
[ { token: '12345' },
{ token: 'SDFDFdsf12313ADADF' },
{ someval: 'foo' } ]
*/