我有一个用正斜杠分隔的字符串,通配符以$开头表示:

/a/string/with/$some/$wildcards


我需要一个正则表达式来获取所有通配符(不带“ $”),其中通配符可以在它们前面有更多的“字符串”(下一个字符应始终为正斜杠)或位于字符串末尾。这是我所在的位置(它与字符串的末尾而不是下一个“ /”匹配):

//Just want to match $one
var string = "/a/string/with/$one/wildcard"
var re = /\$(.*)($|[/]?)/g
var m = re.exec(string)

console.log(m);
// [ '$one/wildcard',
//   'one/wildcard',
//   '',
//   index: 123,
//   input: '/a/string/with/$one/wildcard'
// ]


这是以前的尝试(不考虑字符串末尾的通配符):

//Want to match $two and $wildcards
var string = "/a/string/with/$two/$wildcards"
var re = /\$(.*)\//g
var m = re.exec(string)

console.log(m);
// [ '$two/',
//   'two',
//   '',
//   index: 123,
//   input: '/a/string/with/$two/$wildcards'
// ]


我四处寻找匹配的字符或字符串结尾,但发现了几个答案,但没有一个尝试说明多个匹配项。我想我需要能够贪婪地将下一个字符匹配为/,然后尝试匹配字符串的末尾。

所需的功能是获取输入字符串:

/a/string/with/$two/$wildcards


并将其转换为以下内容:

/a/string/with/[two]/[wildcards]


提前致谢!另外,很抱歉,如果对此进行了明确的详细介绍,在进行各种搜索后,我无法找到副本。

最佳答案

我认为应该这样做:

/\$([^\/]+)/g


您可以使用replace()函数:

"/a/string/with/$two/$wildcards".replace(/\$([^\/]+)/g, "[$1]");
// "/a/string/with/[two]/[wildcards]"

关于javascript - 正则表达式以获取所有出现的带有可选的下一个字符或字符串结尾的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33743033/

10-16 20:52
查看更多