Javascript 如何使用starts with正则表达式(/^myString/g)拆分字符串
我遇到了一个例子,我需要使用regex(/^'searchString'/)开头分割给定字符串,它不起作用,例如Javascript 如何使用starts with正则表达式(/^myString/g)拆分字符串,javascript,jquery,regex,string,split,Javascript,Jquery,Regex,String,Split,我遇到了一个例子,我需要使用regex(/^'searchString'/)开头分割给定字符串,它不起作用,例如 "token=123412acascasdaASDFADS".split('token=') 这里我想提取令牌值,但可能还有其他一些可能的参数,例如 “重置令牌=sdfdsf12313adadf”。拆分('token=') 这里它还使用“token=”拆分字符串,这就是为什么我需要使用一些正则表达式拆分字符串,该正则表达式声明在字符串以给定字符串开头的位置拆分字符串 谢谢 已编辑
"token=123412acascasdaASDFADS".split('token=')
这里我想提取令牌值,但可能还有其他一些可能的参数,例如
“重置令牌=sdfdsf12313adadf”。拆分('token=')
这里它还使用“token=”拆分字符串,这就是为什么我需要使用一些正则表达式拆分字符串,该正则表达式声明在字符串以给定字符串开头的位置拆分字符串
谢谢
已编辑
伙计们,谢谢你们宝贵的回复。这个问题可以通过/\btoken=/解决,但如果“token=”作为字符串存储在变量中,例如
sParam = 'token=';
"token=123412acascasdaASDFADS".split(/\bsParam/);
这不起作用。您可以在带单词边界的拆分中使用正则表达式:
"token=123412acascasdaASDFADS".split(/\btoken=/)
如果token
存储在变量中,则使用RegExp
构造函数:
var sParam = "token";
var re = new RegExp("\\b" + sParam + "=");
然后使用它:
var tokens = "token=123412acascasdaASDFADS".split( re );
您可以在带单词边界的拆分中使用正则表达式:
"token=123412acascasdaASDFADS".split(/\btoken=/)
如果token
存储在变量中,则使用RegExp
构造函数:
var sParam = "token";
var re = new RegExp("\\b" + sParam + "=");
然后使用它:
var tokens = "token=123412acascasdaASDFADS".split( re );
这是
\b
锚定的用例:
\btoken=
它确保
标记之前没有其他单词字符(单词字符为[a-zA-Z0-9.]
)这是\b
锚定的用例:
\btoken=
它确保在标记之前没有其他单词字符(单词字符是[a-zA-Z0-9.]
)您可以尝试使用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]);
您可以尝试使用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]);
您需要使用&
参数分隔符拆分字符串,然后循环遍历这些参数:
var token;
$.each(params.split('&'), function() {
var parval = this.split('=');
if (parval[0] == "token") {
token = parval[1];
return false; // end the $.each loop
}
});
如果您只使用标记=
作为拆分
分隔符,那么将在值中包含它后面的所有其他参数。您需要使用&
参数分隔符拆分字符串,然后循环遍历这些参数:
var token;
$.each(params.split('&'), function() {
var parval = this.split('=');
if (parval[0] == "token") {
token = parval[1];
return false; // end the $.each loop
}
});
如果您只是使用标记=
作为分割
分隔符,那么您将在值中包含它后面的所有其他参数。不清楚您需要什么,但这可能是一个解决方案
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' } ]
*/
不清楚您需要什么,但这可能是一个可以合作的想法
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' } ]
*/
您是否只有一个或多个令牌?每个param=value
组之间是否有类似&
的参数分隔符?将有具有不同名称的唯一参数,例如令牌=dfd&refresh\u-token=dfdsf。所以split确实可以获得确切的token=value。您应该首先使用&
拆分整个参数字符串,然后循环测试它是否以token=
开始。我已经这样做了。您只有一个或多个令牌吗?每个param=value
组之间是否有类似&
的参数分隔符?将有具有不同名称的唯一参数,例如token=dfd&refresh\u token=dfdsf。所以split确实可以获得准确的token=value。您应该首先使用&
拆分整个参数字符串,然后循环测试它是否以token=
开头。我已经在这样做了。谢谢您的回答,但是如果我尝试,现在“token=”作为字符串存储到变量名sParam中“token=123412ACASDAASDFADS”。拆分(/\bsParam/)不起作用。请检查我的更新答案是否从变量中使用它。感谢您的回答,但“token=”作为字符串存储在变量名sParam中,现在如果我尝试“token=123412ACASDAASDFADS”。拆分(/\bsParam/)然后它就不起作用了。请检查我的更新答案,以便从变量中使用它。