正则表达式在Javascript中转换URL

时间:2018-05-21 15:39:04

标签: javascript regex string url

我有一个字符串进入一个方法,该方法是URL构建类的一部分,并且变化很大。在这些变量的情况下,我想捕获一个像这样的字符串:

/MODEL(guid)

并将其转换为

/MODEL?id=guid

我的问题是什么才是最好的方法来捕获进入方法的字符串看起来像“/ MODEL(guid)” - 模型是什么,guid是任何guid并将它们转换为如上所示?例如:

/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)应转换为

/ACCOUNT?id=d60c0dbb-426d-4971-86a6-0fd9d8eaff91

如果任何字符串进入的方法没有看起来像第一个示例的部分,则应该忽略它。我会假设某种正则表达式,但我甚至不知道从哪里开始。

4 个答案:

答案 0 :(得分:3)

我建议的内容如下:

/(?!\/[\w\d]+)\(([\w\d]{8}\-([\w\d]{4}\-){3}[\w\d]{12})\)/

e.g。



let a = /(?!\/[\w\d]+)\(([\w\d]{8}\-([\w\d]{4}\-){3}[\w\d]{12})\)/;
let b = "/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)";
let result = b.replace(a, "?id=$1");
console.log(result);




答案 1 :(得分:2)

您可以使用此代码:

let str = '/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)';
str = str.replace(/(\/\w+)\(([^)]+)\)/g, '$1?id=$2');

console.log(str);
//=> /ACCOUNT?id=d60c0dbb-426d-4971-86a6-0fd9d8eaff91

正则表达式(\/\w+)\(([^)]+)\)/使用2个捕获组:

  1. (\/\w+)是匹配以/开头,后跟1 +字字符的网址段的第一组
  2. \(([^)]+)\)第二组被文字()
  3. 包围

答案 2 :(得分:0)

EAZY:

var string = '/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)';
var matches = string.match(/\/(.*)\((.*)\)/);

var new_string = `/${matches[1]}?id=${matches[2]}`

答案 3 :(得分:0)

那么你需要一个Java或Js函数吗?对于这两个我会使用拆分 对于java:https://www.tutorialspoint.com/java/lang/string_split.htm 对于Js:https://javascript.info/regexp-methods

在Js中它会给出类似的东西:

SELECT     CAST(eventdata().query('/EVENT_INSTANCE/DatabaseName[1]/text()') as NVarchar(128))

它将为您提供一个包含2个值的数组:" / Account"和" id123)"

只需使用切片删除最后一个字符,然后连接以创建字符串

var inString = "/Account(id123)"
splitArray = inString.split("(");