120

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

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

var word = /#(\w+)/ig; //@abc Match

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

4

9 回答 9

149

你可以像这样逃脱它。

/\//ig; //  Matches /

或者只使用 indexOf

if(str.indexOf("/") > -1)
于 2013-05-20T19:46:56.550 回答
33

你需要/\.

/\//ig // matches /
于 2013-05-20T19:46:26.530 回答
11

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

请参阅JSFiddle 中的示例

'/'.match(/\//)            // matches /
'/'.match(new RegExp('/')  // matches /
于 2019-09-26T20:13:13.793 回答
9

如果你想使用/你需要用一个\

var word = /\/(\w+)/ig;
于 2013-05-20T19:46:30.140 回答
8

在正则表达式中,“/”是一个需要转义的特殊字符(AKA 通过在它前面放置一个 \ 来标记它,从而否定它可能提供的任何特殊功能)。

这是您需要的:

var word = /\/(\w+)/ig; //   /abc Match

在此处阅读正则表达式特殊字符:http ://www.regular-expressions.info/characters.html

于 2013-05-20T19:47:09.923 回答
5

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

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

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]
于 2018-02-22T19:22:54.450 回答
0

\在提取由和分隔的文本时,我遇到了与上述相关的两个问题/,并找到了一个适合两者的解决方案,而不是new RegExp\\\\开始时使用 。这些发现在 Chrome 和 IE11 中。

正则表达式

/\\(.*)\//g

不起作用。我认为//尽管有转义字符,它仍被解释为评论的开始。正则表达式(在我的情况下同样有效,但不是一般)

/\b/\\(.*)\/\b/g

也不起作用。我认为第二个/终止了正则表达式,尽管有转义字符。

对我有用的是表示/\x2F,这是 的十六进制表示/。我认为这比 using 更有效且更易于理解new RegExp,但当然它需要注释来识别十六进制代码。

于 2014-10-31T01:47:03.033 回答
0

正斜杠是特殊字符,因此,您必须在正斜杠之前添加反斜杠才能使其工作

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";

其中 / 代表搜索 / 这样你

于 2018-02-07T07:24:56.310 回答
0

对我来说,我试图匹配/C# 中的日期。我只是通过使用来做到的(\/)

string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";

Match m = Regex.Match(text, pattern);

if (m.Success) 
{ 
    Console.WriteLine(match.Groups[0].Value);  // 4/1/2018
}
else
{
    Console.WriteLine("Not Found!");
}

JavaScript 也应该能够类似地使用(\/).

于 2018-09-20T16:11:17.980 回答