我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用@
or #
,而是使用/
。
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
我该如何使用/
而不是#
。我尝试做var slash = '/'
并添加+ slash +
,但是失败了。
我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用@
or #
,而是使用/
。
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
我该如何使用/
而不是#
。我尝试做var slash = '/'
并添加+ slash +
,但是失败了。
Answers:
您可以这样逃避它。
/\//ig; // Matches /
或只使用indexOf
if(str.indexOf("/") > -1)
如果要使用/
,则需要使用\
var word = /\/(\w+)/ig;
在正则表达式中,“ /”是需要转义的特殊字符(AKA通过在其前面加上\进行标记,从而否定了它可能提供的任何特殊功能)。
这是您需要的:
var word = /\/(\w+)/ig; // /abc Match
在此处阅读RegEx特殊字符:http : //www.regular-expressions.info/characters.html
您还可以将正斜杠包含在字符组中,以解决特殊的JS处理,例如:
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const word = /[/](\w+)/ig;
"/dev/null".match(word) // => ["/dev", "/null"]
/[/]/
视觉上比分隔符更清晰地区分尾随定界符/\//
。
/[/]/
更易于阅读和使用,但不幸的是,某些RegEx验证器将报告“即使在字符组中,也必须使用反斜杠对未转义的分隔符进行转义”。所以,我改回了丑陋的/\//
形式。
您可以在它前面加上\
(make \/
)new RegExp('/')
来对其进行转义,或者可以避免转义regex。
参见JSFiddle中的示例。
'/'.match(/\//) // matches /
'/'.match(new RegExp('/') // matches /
对我来说,我正在尝试/
在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也应该能够类似使用(\/)
。
在提取由\
和分隔的文本时,我遇到了与上述问题相关的两个问题/
,并且找到了适合两者的解决方案,而不是使用new RegExp
,这需要\\\\
在开始时是必需的。这些发现在Chrome和IE11中。
正则表达式
/\\(.*)\//g
不起作用。我认为//
尽管有转义字符,但仍被解释为注释的开始。正则表达式(在我的情况下虽然不是一般情况下同样有效)
/\b/\\(.*)\/\b/g
也不起作用。我认为第二/
尽管有转义字符终止了正则表达式。
什么工作对我来说是表示/
为\x2F
,这是十六进制表示/
。我认为这比使用更加有效和易于理解new RegExp
,但是当然需要注释以标识十六进制代码。
正斜杠是特殊字符,因此,必须在正斜杠之前添加一个反斜杠以使其起作用
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
/代表搜索/这样,您