代码之家  ›  专栏  ›  技术社区  ›  Justin Helgerson

在正则表达式中查找加号

  •  28
  • Justin Helgerson  · 技术社区  · 16 年前
    var string = 'abcd+1';
    var pattern = 'd+1'
    var reg = new RegExp(pattern,'');
    alert(string.search(reg));
    

    昨晚我发现,如果你试图用一个javascript正则表达式在一个文本字符串中找到一个加号,它就会失败。它将找不到该模式,即使它存在于该字符串中。这必须是因为一个特殊的性格。在文本中查找加号的最佳方法是什么?另外,还有哪些字符会失败?

    6 回复  |  直到 10 年前
        1
  •  53
  •   Quentin    12 年前

    正是 a special character 在正则表达式中,为了将字符表示为数据,必须用前缀对其进行转义。 \ .

    var reg = /d\+1/;
    
        2
  •  21
  •   kennebec    16 年前
    \-\.\/\[\]\\ **always** need escaping
    \*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]
    

    但是如果你不确定,在你想要匹配的非文字角色之前包含转义不会有任何伤害。

    数字或字母是字字符,转义数字指以前的匹配,转义字母可以匹配不可打印的字符,如换行符(\n)、制表符(\t)或字边界(\b),或一组字符,如任何字字符(\w)、任何非字字符(\w)。

    除非你是认真的,否则不要转义字母或数字。

        3
  •  13
  •   YOU    16 年前

    只是一张便条,

    \ 应该是 \\ 在regexp模式字符串中, RegExp("d\+1") 不起作用 Regexp(/d\+1/) 会出错。

    var string = 'abcd+1';
    var pattern = 'd\\+1'
    var reg = new RegExp(pattern,'');
    alert(string.search(reg));
    //3
    
        4
  •  2
  •   Ash    16 年前

    您应该在模式中的+前面使用转义符\。“+”

        5
  •  2
  •   Kaleb Brasee    16 年前

    您可能需要避开加号:

    var pattern = /d\+1/
    

    在正则表达式中,加号用于指示一行中的一个或多个字符。

        6
  •  1
  •   Khoa Phung    10 年前

    应该是 var pattern = '/d\\+1/' .

    字符串将退出 '\\' 作为 '\' ( '\\+' --> '\+' )所以regex对象init /d\+1/