我对$$
个符号(question with $$)提出了同样的问题,但无法使用\[
和\]
符号使其工作(相同的代码)。我需要正则表达式模式来识别我在这些符号中的时间(我可以在同一文本中有多个,它们都应该被覆盖)。
text.replace(/\$.*?\$/g, function(m, n){
if(caret > n && caret < (n + m.length)){
alert("BOOM");
}
});
所以/\$.*?\$/g
应该变成别的东西,所以当我在\[
和\]
标志内时,它会识别出来。定期更换不起作用(/\\[.*?\\]/g
)。
同样\[some\thing\]
应该有效 - 它应该选择some\thing
(\不应该造成任何麻烦)。
答案 0 :(得分:2)
如果您想要按字面意思匹配\[
,则必须同时转义\
和[
两个字符,因此它变为\\\[
(\]
相同})。
一般情况下:每当您想要匹配具有特殊含义的字符时,您必须使用\
将其转义。
但请注意,反斜杠也是字符串中的转义字符。因此,如果您将字符串定义为:
"\[some\thing\]"
实际值是
"[some hing]"
(\t
是标签页)
你也必须逃离\
:
"\\[some\\thing\\]"
// "\[some\thing\]"
因此,在考虑正则表达式之前,请仔细检查实际输入。
答案 1 :(得分:1)
您可以使用:
/\\\[(.*?)\\\]/g