【问题标题】:RegEx - text between \[ and \]正则表达式 - \[ 和 \] 之间的文本
【发布时间】:2012-03-12 00:03:02
【问题描述】:

我对 $$ 标志 (question with $$) 有同样的问题,但无法使用 \[\] 标志让它工作(相同的代码)。当我在这些标志内时,我需要正则表达式模式来识别(我可以在同一文本中有多个标志,它们都应该被覆盖)。

text.replace(/\$.*?\$/g, function(m, n){
    if(caret > n && caret < (n + m.length)){
        alert("BOOM");
    }
});

所以/\$.*?\$/g 应该变成别的东西,这样当我在\[\] 标志里面时它就会识别出来。常规替换不起作用 (/\\[.*?\\]/g)。

\[some\thing\] 也应该可以工作 - 它应该选择 some\thing(\ 应该不会造成任何麻烦)。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    如果你想从字面上匹配\[,你必须转义两个字符,\[,因此它变成\\\[\]也一样)。

    一般来说:当你想匹配一个有特殊含义的字符时,你必须用\转义它。

    但请注意,反斜杠也是字符串中的转义字符。因此,如果您将字符串定义为:

    "\[some\thing\]"
    

    实际值为

    "[some  hing]"
    

    \t 是一个标签)

    你也必须在这里逃脱\

    "\\[some\\thing\\]"
    //  "\[some\thing\]"
    

    所以在考虑正则表达式之前,请仔细检查实际输入。

    【讨论】:

    • 如果我有 \[some{newline}text\] 怎么办?
    • 你想知道什么?是否要提取some{newline}text{newline} 是字面意思还是换行符\n
    • 我的意思是 \n 或 \r。是的,我希望它以同样的方式工作。因此,如果我在文本字段 \[some\ntext\] (跨越两行)它也应该得到识别。
    • 您可以使用[\s\S] 代替. 来匹配空格和非空格字符。 From MDN(小数点)匹配除换行符以外的任何单个字符:\n\r\u2028\u2029。 ([\s\S] 可用于匹配任何字符,包括换行符。).
    【解决方案2】:

    你可以使用:

    /\\\[(.*?)\\\]/g
    

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2012-02-22
      • 2023-04-07
      相关资源
      最近更新 更多