【问题标题】:RegExp search for special character "[" [duplicate]RegExp 搜索特殊字符“[” [重复]
【发布时间】:2011-08-02 12:59:13
【问题描述】:

我在扫描特殊字符“[”时遇到了困难。环顾四周,我试过了:

var regEx = new RegExp(someValue + "[\x5B]");  // "5B" is the hex-value for "["

(我确实想要区分大小写,我只想要第一次出现,所以我故意没有添加任何修饰符。)

我一直在寻找和寻找,我仍然不知道我做错了什么。如果这是一个愚蠢的问题,我很抱歉,但我是 JavaScript 新手,而且我还在学习所有的来龙去脉。

【问题讨论】:

  • 它适用于我:RegExp("[\x5B]").test("[") 产生 true。
  • 谢谢大家的快速回答,我真的很感激。但是,谁曾投过反对票,感谢您对新手的耐心;我只是想学习。
  • 正则表达式很有趣! 但我强烈建议您花一两个小时学习基础知识。对于初学者,您需要了解哪些字符是特殊的:需要转义的“元字符”(字符类内部和外部的规则不同。)有一个很好的在线教程:www.regular-expressions.info。你在那里度过的时间会多倍地收回成本。快乐的正则表达式!
  • 我已将它保存在我的书签中!谢谢你的建议,我顶了你的评论。干杯!

标签: javascript regex


【解决方案1】:
function escapeRegExp(str) {
  return str.replace(/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

var re = new RegExp(escapeRegExp(str));   

见:Escape string for use in Javascript regex

【讨论】:

    【解决方案2】:

    正则表达式 .\[.[\x5B] 都匹配文本中的子字符串 "e["

    "some[text"
    

    如你所见:


    http://ideone.com/iR78l

    var text = "some[text";
    print(text.match(/.\[/));
    

    http://ideone.com/qvsCz

    var text = "some[text";
    print(text.match(/.[\x5B]/));
    

    【讨论】:

      【解决方案3】:

      我认为您只需要 /[/ 让您的表达式找到“[”的第一次出现

      如果您要查找更复杂的内容,请查看此工具: http://www.gskinner.com/RegExr/

      它是创建正则表达式的救星。

      【讨论】:

      • 我的 JavaScript 控制台拒绝将 /[/ 作为无效的正则表达式。
      【解决方案4】:
      var regEx = new RegExp(someValue + "\\[");
      

      您只需使用反斜杠将其转义即可。反斜杠是双倍的,因为它也是一个 javascript 特殊字符。

      【讨论】:

      • 你是对的,这是完美的!我试图使用 RegExp.lastIndex(),它在没有“g”修饰符的情况下不起作用。它本质上是关闭的,我试图用它来告诉我我的搜索是否有结果。谢谢,
      【解决方案5】:

      应该没问题,如果你只是转义字符:

      new RegExp(someValue + "\\[");
      

      您需要两个反斜杠,因为反斜杠也是字符串的转义字符。所以\\[ 将产生字符串\[,这正是我们所需要的。

      【讨论】:

      • 谢谢,这是一个完美的解释。我选择了另一个答案,因为它首先弹出,但我给了你一个惊人的帮助!谢谢,
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多