正向斜线与正则表达式匹配

iBr*_*an2 79 javascript regex

我没有太多的JavaScript经验,但我正在尝试创建一个标签系统,而不是使用@#将使用/.

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match
Run Code Online (Sandbox Code Playgroud)

我怎么能用/而不是#.我尝试过var slash = '/'并添加+ slash +,但失败了.

Ben*_*ick 100

你可以像这样逃避它.

/\//ig; //  Matches /
Run Code Online (Sandbox Code Playgroud)

或者只使用indexOf

if(str.indexOf("/") > -1)
Run Code Online (Sandbox Code Playgroud)


dje*_*lin 20

你需要逃避/一个\.

/\//ig // matches /
Run Code Online (Sandbox Code Playgroud)


epa*_*llo 6

如果你想使用/你需要逃避它\

var word = /\/(\w+)/ig;
Run Code Online (Sandbox Code Playgroud)


Kir*_*k H 6

在正则表达式中,"/"是一个需要转义的特殊字符(通过在它之前放置\来标记AKA,从而否定它可能服务的任何专用函数).

这就是你需要的:

var word = /\/(\w+)/ig; //   /abc Match
Run Code Online (Sandbox Code Playgroud)

阅读RegEx特殊字符:http://www.regular-expressions.info/characters.html

  • "/"不是正则表达式中的特殊字符.然而,它是JavaScript中的一个特殊字符,用于界定正则表达式的开始和结束位置. (14认同)

nup*_*ick 5

您还可以通过将正斜杠括在一个字符组中来解决对正斜杠的特殊 JS 处理,如下所示:

const start = /[/]/g;
"/dev/null".match(start)     // => ["/", "/"]

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]
Run Code Online (Sandbox Code Playgroud)

  • +1,使用字符集来避免转义确实会使 RegEx 长一个字符,但它的可读性是值得的:`/[/]/` 在视觉上比 `/\//` 更清楚地区分尾随定界符。 (2认同)
  • `/[/]/` 更容易阅读和工作,但不幸的是,一些 RegEx 验证器会报告 **“非转义的分隔符必须用反斜杠转义”**,即使在 *字符组* 内。所以,我已经切换回丑陋的 `/\//` 形式。 (2认同)

小智 5

您可以通过在它前面加上\(make it \/)new RegExp('/')转义它,或者您可以使用它来避免转义 regex

请参阅JSFiddle 中的示例

'/'.match(/\//)            // matches /
'/'.match(new RegExp('/')  // matches /
Run Code Online (Sandbox Code Playgroud)