Javascript——只获取正则表达式匹配的变量部分

Javascript——只获取正则表达式匹配的变量部分,javascript,regex,Javascript,Regex,鉴于: var regexp=new regexp(“,”g”); javascript中最简单的方法是将变量分配给与之匹配的对象。* 我能做到,但有点难看: var regexp = new RegExp("<~~include(.*?)~~>", "g"); myString.match(regexp.replace(“,”); (引用自) 在正则表达式模式中包含括号会导致记住相应的子匹配。例如,/a(b)c/匹配字符'abc',并记住'b' 由于*?是记忆中的第一个(也是唯

鉴于:

var regexp=new regexp(“,”g”);
javascript中最简单的方法是将变量分配给与之匹配的对象。*

我能做到,但有点难看:

var regexp = new RegExp("<~~include(.*?)~~>", "g");
myString.match(regexp.replace(“,”);
(引用自)

在正则表达式模式中包含括号会导致记住相应的子匹配。例如,
/a(b)c/
匹配字符
'abc'
,并记住
'b'

由于
*?
是记忆中的第一个(也是唯一一个)匹配项,请在替换字符串中使用
$1

myString.match(regexp).replace("<~~include", "").replace("~~>", "");

编辑:根据您的评论,您还可以(可能有更明确的意图)这样做:


Javascript应该在正则表达式匹配中返回一个数组对象,其中数组的零索引是匹配的整个字符串,以下索引是捕获组。在您的情况下,类似于:

var myVar=regexp.exec(myString)[1]


应该将
(.*)
捕获组的值分配给
myVar

您可以对该正则表达式的一部分使用lookahead。请看这里:

和/或此处:


谢谢你。事实上,我并不想替换整个东西,我只是想知道。*的价值是什么?是刚才评论(然后删除了他的评论)说第一个版本也可以用。他是对的,但是我想
replace
版本的意图没有
exec
版本的意图那么清晰。在任何一种情况下,您都必须将
replace
/
exec
返回的值分配给另一个变量。查找不是答案。这有什么用?[引用]谢谢熊。事实上,我并不想替换整个东西,我只是想知道。*的价值是什么?是——morgancodes会在15分钟前编写一个正则表达式来匹配和排除他们不想要的信息。如果没有匹配,这不会抛出错误吗?如果没有匹配项,它将返回null,因此尝试访问null对象的数组索引将抛出错误。
var foo = myString.replace(regexp, '$1');
var foo = regexp.exec(myString)[1];