当前位置: 首页 > 知识库问答 >
问题:

保留先前匹配的RegExp对象

巢靖
2023-03-14

考虑以下Javascript正则表达式代码

v = 'The dog jumped over the moon';

// Matches
if (v.match(/(jump)ed/)) {
    alert('Initial: ' + RegExp.$1); // Alerts "jump"
}

// Obviously not matched, but RegExp object retains previous match
if (v.match(/(gygyujgujy)/)) {
    alert(RegExp.$1);
}

// Alerts "jump" but shouldn't this be null/false etc?
alert('Final: ' + RegExp.$1);

第二个正则表达式,尽管不匹配,但保留第一个正则表达式匹配。

RegExp对象不应该是空的,因为第二个正则表达式不匹配吗?

共有2个答案

花稳
2023-03-14

它们是非标准属性,并记录为:

只要匹配成功,这些属性的值都是只读的,并且会进行修改。

gygyujgujy没有匹配项,因此保留现有值。

锺离浩慨
2023-03-14

从…起https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n

“1美元,...,9美元属性是静态的,它们不是单个正则表达式对象的属性。相反,您总是将它们用作RegExp。1美元,...,RegExp。9美元。

只要匹配成功,这些属性的值都是只读的,并且会进行修改。“”

由于您的第二个if语句永远不匹配任何内容,因此不会为1美元分配新值

 类似资料:
  • 问题内容: 我想用新字符串替换正则表达式匹配的字符串,但仍保留部分原始文本。 我想得到 从 我如何用一行代码来做到这一点?我尝试过,但不能超越此。谢谢, http://play.golang.org/p/SruLyf3VK_ 问题答案: 您甚至不需要捕获组。 包含与整个模式匹配的字符串;将包含与第一个子模式(或捕获组)匹配的字符串(如果有的话),您可以在Darka的答案中看到。

  • 问题内容: 我试图模糊匹配两个csv文件,每个文件包含一列名称,它们相似但不相同。 到目前为止,我的代码如下: 输出如下: 该脚本工作正常。输出是预期的。但是我所寻找的只是最佳的匹配。 因此,我需要基于第2列中的最大值,以某种方式删除第1列中的重复名称。这应该相当简单,但是我似乎无法弄清楚。任何帮助,将不胜感激。 问题答案: Fuzzywuzzy会以反向排序的顺序返回列表,最佳匹配排在最前面。 因

  • 问题内容: 例如我有字符串: 结果,我希望具有以下匹配项: 我知道我可以这样写: 但是我认为我很丑,正在寻找更好的解决方案。我在寻找正则表达式解决方案,而不是自写的有限状态机。 问题答案: 您可以将其与:

  • 问题内容: 是否有任何使用hibernate的公认的,行之有效的方式来保存实体在数据库中的更改历史? 我们需要跟踪相当多的对象,并且希望能够撤消对对象的更改。 我尝试使用hibernate模式的拦截器,但是对象的旧状态仅在执行时可用。大多数情况下我们还是这样做… 我目前正在让warp-persist和Guice一起管理会议。 问题答案: 我已经完成了一个拦截器(基于EmptyInterceptor

  • 问题内容: 我想匹配一个看起来像这样的字符串: 如果存在lang_tags不包含的文本(在本示例中为),我希望匹配返回true 。也可以将其放置在字符串的开头或结尾。 空格不应匹配,例如不应导致匹配。 我不能使用超前或回溯,因为MySQL似乎不支持此功能。 有什么建议? 问题答案: 试试这个正则表达式: 这是您可以使用的方式: 它应该处理所有情况: 前 后 中间 不是空格

  • 问题内容: 有谁知道Mysql的regexp是否支持unicode?我一直在做一些研究,大多数博客等都表明存在问题或不支持。我想知道,最好将LIKE用于unicode模式匹配,将regexp用于ASCII增强模式匹配吗? 我喜欢能够在字符串开头或结尾搜索匹配项的想法,但是如果regexp不支持unicode,那么如果我的文本是unicode,则可能会很困难。 问题答案: 有谁知道Mysql的reg