【问题标题】:match doesn't return capturing group [duplicate]匹配不返回捕获组[重复]
【发布时间】:2015-11-14 19:40:19
【问题描述】:

我正在尝试将正则表达式应用于字符串,以搜索任何占位符,但我无法弄清楚为什么结果只是完全匹配,而不是捕获组。

//----HTML------------------------//    
<p>Let's try plaintext.<br/>
bommdidumpidudidoo</p>

<p id="output"></p>

//----JS------------------------//    
var s = $('p').html();
var matches = s.match( /.*(plaintext)/g );

write(matches);
write(matches[0]);
write(matches[1]);



//------- whatever -------//
function write(s) {
    $('#output').html( $('#output').html() +'<br/>'+s );
}

// output:
// Let's try plaintext
// Let's try plaintext
// undefined

» fiddle
(我使用了我的自定义函数 write 而不是 console.log 以便结果会显示在小提琴中)

为什么第三行没有定义?我不明白!

很漂亮确定表达是正确的。我有 1oo% 的把握这是 JavaScript 的正确捕获组语法,并且 .match() 首先返回一个完全匹配的数组,然后是所有捕获组。我什至用 regex101.com 对其进行了测试——在那里,我得到了捕获组。

它与this other problem 不同,因为这里的 OR 逻辑是问题的症结所在,而这里的管道 | 甚至都没有出现。

【问题讨论】:

  • 其他线程是相关的,但它是如何重复的?我也没有询问引号,也没有任何答案将g 修饰符标记为.match() 未返回捕获组的原因。

标签: javascript regex capturing-group


【解决方案1】:

哦!这是因为我正在使用 g 修饰符进行全局搜索。如果我删除该修饰符,我确实会得到预期的结果。呸。

我首先使用了那个修饰符来获取多个占位符,但我想我仍然可以循环那些东西……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多