考虑这个字符串,
var string = "sometext/#a=some_text/#b=25/moretext";
我想做的是提取“a”和“b”(“some_text”和25)的值
基本上我想要做的就是找"#a="
并抓住下面/
之前的所有内容,然后对b做同样的事情。
有人能告诉我这是如何实现的吗?另外,我会使用相同的表达式来更改字符串中的值吗?
我有一手用PHP做这个,但现在我无法弄清楚JavaScript。如果有人可以帮我一把,我会很感激,谢谢。谢谢。
编辑:这是提取的PHP版本。
$string = "sometext/#a=some_text/#b=25/moretext";
$expr = '@#([a-z]+)=(.+?)/@';
$count = preg_match_all($expr, $string, $matches);
$result = array();
for ($i = 0; $i < $count; $i++) {
$result[$matches[1][$i]] = $matches[2][$i];
}
print_r($result[b]);
(输出将是“some_text”)
答案 0 :(得分:3)
var x = "sometext/#a=some_text/#b=25/moretext".match(/#a=(.+)\/.*#b=(.*).*\//)
var matches = [x[1], x[2]];
答案 1 :(得分:2)
如果您要提取所有值并将它们作为名称/值对存储在字典中,您可以使用:
var regexp = /#(.*?)=(.*?)\//g;
var string = "sometext/#a=some_text/#b=25/moretext";
var match;
var result = {};
while ((match = regexp.exec(string)) != null) {
result[match[1]] = match[2];
}
alert(JSON.stringify(result));
答案 2 :(得分:1)
根据有限的信息(您没有指定#
和=
之间可以显示哪些字符),以下是我认为您正在寻找的内容:
var string = "sometext/#a=some_text/#b=25/moretext",
regex = /#([^=]+)=([^\/]+)/g,
matches = [],
match;
while (match = regex.exec(string)) {
matches.push(match[2]);
}
// matches -> ["some_text", "25"]
如果要更改字符串中的值,可以使用与以前相同的正则表达式执行此操作:
string = string.replace(regex, "#$1=new_value");
// -> "sometext/#a=new_value/#b=new_value/moretext"
答案 3 :(得分:0)
更改字符串
的值var string = "sometext/#a=some_text/#b=25/moretext";
Regex.Replace(string,"(#a=).(/)",,"$1New Text$2");