如何使用带正则表达式的开头拆分字符串(/ ^ myString / g)

时间:2014-08-19 07:40:52

标签: javascript jquery regex string split

我遇到一个案例,我需要使用正则表达式(/ ^' searchString' /)的开头拆分给定的字符串,这不起作用,如

"token=123412acascasdaASDFADS".split('token=')

这里我想提取令牌值,但可能还有一些其他可能的参数,例如    "reset_token=SDFDFdsf12313ADADF".split('token=')

这里它还用' token ='分割字符串,这就是为什么我需要使用一些正则表达式来拆分字符串,该正则表达式将字符串拆分为以给定字符串开头的字符串。

谢谢..

EDITED 伙计们感谢您的宝贵回复,可以使用 / \ btoken = / 来解决此问题但是如果'令牌='它不起作用作为字符串存储到变量中,如

sParam = 'token=';
"token=123412acascasdaASDFADS".split(/\bsParam/);

这不起作用。

5 个答案:

答案 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]);

Learn more...

答案 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' } ]
 */