【问题标题】:why jquery pattern match method is firing only for the first element为什么 jquery 模式匹配方法仅针对第一个元素触发
【发布时间】:2015-07-09 11:43:38
【问题描述】:

我在这个函数中传递字段 id

function expDuration(id) {

     if(id.match(/-exp_dol/g).length > 0 || id.match(/-exp_doj/g).length > 0){
                alert(id);
          }

现在,如果我传递具有模式“-exp_dol”的 id,它会提醒我 id 但如果我传递具有模式“-exp_doj”的 id,它不会提醒我 id

现在有趣的是如果我先写 exp_doj 然后 OR 运算符然后是 exp_dol 的 if 语句 像这样

if(id.match(/-exp_doj/g).length > 0 || id.match(/-exp_dol/g).length > 0){
                alert(id);
          }

并传递与“-exp_doj”匹配的 id,它会提醒我,而对于“-exp_dol”它不会提醒

所以匹配方法只针对第一个元素而不是第二个元素是正确的,否则我做错了......请告诉我

【问题讨论】:

  • 查看浏览器的错误控制台。错误消息应该很容易帮助解决问题。

标签: jquery pattern-matching expression match


【解决方案1】:

尝试使用,这对我有用

id="this is -exp_dol sdgfsd";
if(id.match(/(?:-exp_doj|-exp_dol)/ig))
{
  alert('present');
}

看完评论。这也将起作用。我已经发布了对我有用的代码。我们可以不使用ig 或仅使用g

id="this is -exp_dol sdgfsd";
    if(id.match(/(?:-exp_doj|-exp_dol)/))
    {
      alert('present');
    }

这是一个有效的 js fiddle jsfiddle

【讨论】:

  • 不是我的反对票,但为什么要向前看?即使原始代码没有,为什么还要添加i 标志?为什么保留g 标志?为什么不只是/-exp_do[jl]/
  • ig 在正则表达式中用于搜索完整的字符串。如果关键字存在于整个字符串中。它也只适用于g,也适用于没有这个。
  • i 表示不区分大小写的搜索。它与“在完整字符串中搜索”没有任何关系。
  • 我对正则表达式了解不多。这个解决方案对我有用,所以我发布了这个。如果您或投反对票的人有更好的解决方案,那么您可以发布该解决方案,而不是投反对票或争论。该解决方案在这两种情况下都非常有效并满足了问题要求。那怎么了??
  • 我学习很有趣。贴出我会从中学习的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2012-03-12
相关资源
最近更新 更多