为什么 Regex Javascript //g 标志会影响状态? [复制]

2024-03-06

I had 另一个问题 https://stackoverflow.com/questions/9860057/javascript-regex-match-defective虽然得到了回答,但我不明白为什么正则表达式会受到这样的影响

From w3学校 http://www.w3schools.com/jsref/jsref_obj_regexp.asp it says

g:执行全局匹配(查找所有匹配项而不是在第一个匹配项后停止)

可以,当然。我明白。这就是为什么我在这段代码中得到一个数组

var str="The rain in SPAIN stays mainly in the plain";
var patt1=/ain/gi;
document.write(str.match(patt1));

Output:

ain,AIN,ain,ain 

正则表达式类似,/g它将取代多个实例。

然而在比赛中

var re=/hi/gi;
alert(re.test("hi") + " " + re.test("hi"));

结果是“真假”。

现在为什么 $%^& 会这样做呢?两次测试中的字符串完全相同!在过去,我认为全局意味着它将跨换行符进行搜索(这就是我在这个测试中想要做的)。我引用的第一件事是关于 g 是一个全局匹配。

没有任何提及它会影响下一次通话!没有 /g 代码将正常工作(而且我也不需要跨越换行符)。为什么会影响接下来的测试呢?口香糖答案提到它会影响调用之间的lastIndex以及%^&*我不知道有共享状态,因为当我使用g标志时其他两个函数没有使用它。我只想要一个 true 和 false,但如果有任何内容不应该匹配,则返回一个包含全局找到的匹配数量的 int ? (即“hi”中为 1,但字符串“hihi”中为 2)。

为什么在执行 regex.test 时 g 会影响我的下一次调用?!另外,如果可以的话,请提供我真正想要该“功能”的时间


当您在正则表达式中使用全局标志时,lastIndex 属性会更新。 lastIndex 属性是开始下一场比赛的索引。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

您可以在再次调用之前重置最后一个索引。看

为什么 Javascript 中带有全局标志的 RegExp 会给出错误的结果? https://stackoverflow.com/questions/1520800/why-regexp-with-global-flag-in-javascript-give-wrong-results

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Regex Javascript //g 标志会影响状态? [复制] 的相关文章

随机推荐

  • 可以在 Inno Setup 脚本中使用环境变量吗?

    我需要找到一种方法来引用 Inno Setup 脚本文件 iss 中的环境变量 我发现了很多关于从 iss 修改环境的参考资料 但没有关于如何实际使用它的参考资料 这可能吗 当我尝试在 Files 部分中指定文件的源位置时 我遇到了同样的问
  • 在 Liquibase 中添加复合唯一约束

    我正在创建一个包含 3 列的链接表 id 产品 id 锦标赛 id 向 id 列添加 uniqueConstraint 很简单 但我想确保任何一对 product id tournament id 都是唯一的 Liquibase org 上
  • 手动验证 ASP.NET Identity 中的密码重置令牌

    我想手动验证 ASP NET Identity 2 0 中的密码重置令牌 我正在尝试创建我自己的版本UserManager ResetPasswordAsync string userId string token string newPa
  • 使用 Spring MVC 在表单中显示验证错误

    我已经搜索了这个论坛的几个教程和答案 试图解决我的问题 我想使用 spring MVC 在我的表单中显示我的 bean 的验证错误 无论我如何尝试 我都无法让它发挥作用 我没有使用重定向 我的绑定结果直接在模型类之后 等等 这是我到目前为止
  • 网络桌面 - 您觉得有趣吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 作为一名近几年转向 Web 开发的 win32 开发人员 我发现基于 extjs 的网络桌面非常有趣 酷莱特桌面 http examples c
  • jhipster liquibase 不更新数据库

    我正在尝试添加一个新实体 但不使用完整的热重载 因此我创建了一个 db changelog 002 xml 文件 其中包含要在文件的变更集中创建的新表 然后我运行了 mvn spring boot run 但我的数据库没有使用新表进行更新
  • 如何使用 MonkeyRunner 将 Extra 传递给 Android 意图?

    我正在尝试使用测试我的应用程序猴跑者 http developer android com guide developing tools monkeyrunner concepts html工具 我正在尝试为我的活动添加额外内容 pytho
  • Matlab指纹细节提取

    目前我对指纹验证和细节点提取很感兴趣 我在网上找到了以下代码 不知道是否有人可以解释一下 我查过质心 区域属性等 我对这些有一点了解 但下面的代码让我感到困惑 fun minutie L nlfilter K 3 3 fun Termina
  • 如何在 C# 中获取每个核心的 CPU 负载?

    如何在 C 中获取每个核心 四核 cpu 的 CPU 负载 谢谢 您可以使用 WMI 或 System Diagnostics 命名空间 从那里您可以获取任何您想要的性能计数器 但是需要一秒钟 1 1 5秒 来初始化这些计数器 读取值是可以
  • 未处理的异常:Follows 在被释放后被使用。一旦你对 Follows 调用了 dispose(),它就不能再被使用

    我是使用提供程序包进行颤振状态管理的新手 有多少不同的原因会产生这些类型的异常 我该如何修复它 这个异常是在以下时间生成的getFollowing 方法被叫进来didChangeDependency 跟随 dart class Follow
  • 使用 PHP 的 DOMDocument 时避免对 href 属性进行百分比编码

    我能够找到的针对此问题的最佳答案是使用 XSLT 但我只是不确定如何将这些答案应用于我的问题 基本上 DOMDocument 在转义 URL 方面做得很好 在href属性 但我实际上使用它来构建 Twig Django 样式模板 我宁愿它不
  • 如何在 PHP 中打开名称中包含 unicode 字符的文件?

    例如 我有一个像这样的文件名 xml 但我无法从 PHP 脚本打开它 如果我将 php 脚本设置为 utf 8 则脚本中的所有文本都是 utf 8 因此当我将其传递给 file get contents 时 fname xml file g
  • 如何将RMarkdown文件导出为两列的HTML文档?

    我正在为工作中的一些新 R 用户整理一个 R Markdown HTML 页面 向他们进行介绍并引导他们完成一些简单的演示 在炫耀诸如此类的东西时head and tail 它最终看起来又乱又长 因为它一个接一个地打印出每个输出 我希望它们
  • 子集数据帧的最有效方法

    任何人都可以建议在不使用的情况下对数据框进行子集化的更有效方法SQL indexing data table选项 我寻找了类似的问题 并且this one https stackoverflow com questions 12479238
  • 如何使用highlight.js动态更改主题?

    我有以下代码 div class container pre code class html code pre div
  • 如何获取Reactjs中单选按钮(react-radio-buttons)的值?

    如果我打电话 如何获取单选按钮的值更新单选按钮在 RadioGroup 中 它会导致错误 我需要使用 react radio buttons 在控制台中打印为男性或女性 单选按钮打印正确 但我无法获取该值 先感谢您 class Create
  • NHibernate 多对一映射:如果父级为 null,则将外键设置为空 Guid 而不是 null

    我想要做的事情确实非常简单 但我似乎无法使用 NHibernate 进行正确的映射 我正在处理一个包含父对象和子对象的数据库 子对象具有对数据类型 Guid 的父对象主键的外键引用 无论如何都很正常 现在数据库的设置方式是外键字段不能为空
  • 组合 Monad 与应用函子

    The 类型分类百科全书 https wiki haskell org Typeclassopedia s 莫纳德变形金刚部分解释 不幸的是 Monad 的组合不如 Applicative 函子 如果您不需要 Monad 提供的全部功能 这
  • 按日期范围对数据进行分组

    我想知道如何根据日期范围选择数据范围 我的付款表中有这些数据 格式为 dd mm yyyy Id Date Amount 1 4 1 2011 300 2 10 1 2011 200 3 27 1 2011 100 4 4 2 2011 3
  • 为什么 Regex Javascript //g 标志会影响状态? [复制]

    这个问题在这里已经有答案了 I had 另一个问题 https stackoverflow com questions 9860057 javascript regex match defective虽然得到了回答 但我不明白为什么正则表达