0

我没有太多使用正则表达式和努力解决问题的经验:我有一个如下所示的网址:

http://example.com/ja-JP/blog/12345 _ _

我想将上面的 url 重定向到下面的 url :

http://jp.example.com/ja/blog/12345 _ _ _ _

此外,我想使用 aws ALB 重定向规则进行重定向。而且我将不得不使用不同的国家语言环境模式进行相同的 URL 重定向。例如 en-BZ、en-CA。

我需要帮助如何捕获语言国家部分并修改源 URL?

4

2 回答 2

0

使用以下 JavaScriptRegular expressions可能会有所帮助:

/(example.com\/[a-z]{2,})-([a-z]{2,})/i

以下是工作示例:

'http://example.com/ja-JP/blog/12345'.replace(/(example.com\/[a-z]{2,})-([a-z]{2,})/i, '$2.$1');
// Outputs "http://JP.example.com/ja/blog/12345"

'http://example.com/en-BZ/blog/12345'.replace(/(example.com\/[a-z]{2,})-([a-z]{2,})/i, '$2.$1');
// Outputs "http://BZ.example.com/en/blog/12345"
于 2019-12-05T11:45:17.207 回答
0

这是匹配语言和国家的正则表达式:

\/(?<lang>[a-z]{2})-(?<country>[A-Z]{2})\/  

这是示例

[az] 表示小写字母,[az]{2} 表示两个小写字母,(?<lang>[az]{2}) 将其组成一个组并将其命名为“lang”,然后是破折号“-”,以及两个大写字母组并命名为'country',并包含在两个'/'中

既然不知道你的开发语言是什么,就说是PHP,那么:

preg_match('/\/(?<lang>[a-z]{2})-(?<country>[A-Z]{2})\//' ,$url, $matches);
// $matches['lang']='ja' $matches['country']='JP'

$url = preg_replace('/\/(?<lang>[a-z]{2})-(?<country>[A-Z]{2})\//', '/'.$matches['lang'].'/', $url);
// $url = 'https://example.com/ja/blog/12345'

$url = preg_replace('/(https?:\/\/)/', '$1'.$matches['country'].'.', $url);
// $url = 'https://JP.example.com/ja/blog/12345'

(https?://) 匹配“http://”或“https://”

于 2019-12-05T11:23:13.653 回答