在正则表达式中,“逃避字符串”是什么意思? (JavaScript)的

时间:2016-05-06 04:33:12

标签: javascript regex escaping

我试图理解反斜杠以及如何在正则表达式中使用像\这样的转义。

我已经读过,当使用字符串时,其命名为转义字符串

但这究竟意味着什么?

3 个答案:

答案 0 :(得分:2)

正则表达式中的许多字符具有特殊含义。例如,点字符'。'意味着"任何一个角色"。这些特殊定义的角色有很多,有时你想搜索,而不是使用它的特殊含义。

请参阅此示例以搜索包含'。':

的任何文件名
/^[^.]+\..+/

在这个例子中,有3个点,但我们的描述说我们只是寻找一个点。让我们按点分解:

  • 点#1用于"字符类" (方括号内的字符),告诉正则表达式引擎搜索"任何一个字符"那不是'。'和" +"说要继续下去,直到没有更多的角色或下一个角色是'。'我们正在寻找。
  • 点#2前面有一个反斜杠,表示我们正在寻找文字''在字符串中(没有反斜杠,它将使用其特殊含义,即寻找"任何一个字符")。这个点被称为"转义",因为它的特殊含义没有在这种情况下使用 - 在它发生之前的反斜杠。
  • Dot#3只是寻找"任何一个角色"再次,' +'跟着它说要继续这样做,直到它用完字符。

因此,反斜杠用于"转义"紧随其后的人物;因此,它被称为"转义字符"。这只意味着角色的特殊意义在那个地方消失了。

现在,转义一个字符串(用正则表达式术语)意味着找到具有特殊含义的所有字符并在它们前面放一个反斜杠,包括在其他反斜杠字符前面。如果您已经在字符串上完成了这一次,那么您已正式"转义字符串"。

答案 1 :(得分:1)

Quoting from MSDN:

  

正则表达式中的反斜杠(\)表示以下之一:

     
      
  1. 后面的字符是一个特殊字符,如下一节中的表所示。例如,\ b是一个锚点,表示正则表达式匹配应从单词边界开始,\ t表示制表符,\ x020表示空格。

  2.   
  3. 否则将被解释为非转义语言构造的字符应按字面解释。例如,大括号({)开始定义量词,但是后跟大括号(\ {)的反斜杠表示正则表达式引擎应该与大括号匹配。类似地,单个反斜杠标记转义语言构造的开头,但是两个反斜杠(\)表示正则表达式引擎应该与反斜杠匹配。

  4.   

答案 2 :(得分:1)

假设你试图打印出一个字符串,让我们说'#34;这个\"。 该\字符被识别为特殊字符。我不确定正则表达式,但是用Java或C表示,\ t会将字符串的其余部分选中,因此它将打印为

this    hat

但是\"逃脱"字符串中的一个字符,使其具有规则含义,因此使用"这个\#&相反会导致

this\that

我希望这会有所帮助。