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];