Regexp:只捕获括号内的内容
Regexp: only capturing a stuff within parenthesis
本文关键字:Regexp 更新时间:2023-09-26
在JavaScript中,我想捕获像%{VAR}
这样的东西。下面的代码:
"I am %{name} and I am %{age}".match(/%'{(.+?)'}/g);
给我:
["%{name}", "%{age}"]
同时我想:
["name", "age"]
您需要使用RegExp#exec
并在循环中调用它。String#match()
丢失所有捕获组。
var re = /%{([^{}]+)}/g;
var str = 'I am %{name} and I am %{age}';
var m, arr = [];
while ((m = re.exec(str)) !== null) {
arr.push(m[1]);
}
document.body.innerHTML = JSON.stringify(arr, 0, 4);
此外,您还可以使用一个改进的正则表达式:%{([^{}]+)}
。
在JS中,您不必转义{
和}
。此外,为了提高效率,可以使用否定字符类[^{}]
,该类与除{
或}
之外的任何字符相匹配。
Regex解释:
%{
-匹配文字%{
([^{}]+)
-组1:匹配除{
和}
之外的1个或多个字符- CCD_ 15-一个文字CCD_ 16
相关文章:
- RegExp:匹配Javascript中除regex值之外的所有内容
- JavaScript正则表达式文本与RegExp对象
- 使用RegExp查找url中的字符
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 全局标志仅与第一个匹配项匹配的Regexp
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- 替换为javascript中的regExp
- Javascript Regexp-不接受空格,但应该接受
- javascript中换行的regexp
- 带有多个修饰符的JavaScript RegExp
- Regexp奇怪地不起作用
- RegExp匹配任意字符串+8位数字
- 使用RegExp获取一系列单词,这些单词前后可能有空格,也可能没有空格
- RegExp-如何匹配尽可能短的金额
- javascript:查找/替换regexp帮助-粗体、斜体和特定字符
- javascript RegExp不't过滤器编号
- 在javascript regexp中捕获多个变量的一种更简单的方法
- Javascript:如何通过Regexp从属性中提取字符串
- javascript regexp,用于验证一开始没有http的url
- 为什么(new RegExp(“w”)==/w/)在JS中为false