正则表达式 - 拆分URL路径并放入变量

时间:2018-04-18 05:31:09

标签: regex

我对正则表达式非常不满意。我有一个像/this%20is%20part%20one/and%20part%20two这样的网址,我需要:

1)将所有%20替换为空格,使其成为正常的字符串

2)将每个部分存储在自己的变量

最后,var1应该有this is part one而var2应该有and part two

我为你拍了一张照片:

enter image description here

3 个答案:

答案 0 :(得分:3)

使用Javascript



var re =/%20/g;
var testString = '/this%20is%20part%20one/and%20part%20two';
var splitString= testString.replace(re,' ').split('/')
var var1= splitString[1];
var var2= splitString[2];
console.log('var1:',capitalizeFirstLetters(var1));
console.log('var2:',capitalizeFirstLetters(var2));

function capitalizeFirstLetters(str){
  return str.toLowerCase().replace(/^\w|\s\w/g, function (letter) {
      return letter.toUpperCase();
  })
}




答案 1 :(得分:1)

使用sed即可:

url="/this%20is%20part%20one/and%20part%20two"
var1=$(sed 's/%20/ /g' <<< $url | cut -d'/' -f2)
var2=$(sed 's/%20/ /g' <<< $url | cut -d'/' -f3)

输出:

>echo $va1
this is part one
>echo $var2
and part two

答案 2 :(得分:0)

你真的需要一个正则表达式吗?好像用锤子打飞。你应该能够:

  1. .replace()%20执行全局' '
  2. /作为分隔符将该字符串分解。
  3. 例如:

    let url  = '/this%20is%20part%20one/and%20part%20two';
    
    url = url.replace( /%20/g, ' ', url ); //url = "/this is part one/and part two"
    url = url.split('/'); //url = ["", "this is part one", "and part two"]
    

    这将允许您使用数组索引:url[1]url[2]url[0]从捕获的第一个/开始为空。但是,如果您不想使用索引数组,则适合您的示例:

    var1 = var2 = '';
    
    for( i = 0, n = 1; i < url.length; ++i ){
        if( url[i].length > 0 ){
            window['var' + n++] = url[i];
        }
    }
    
    console.log(
        var1, // "this is part one"
        var2  // "and part two"
    );