【问题标题】:what does the following java script expression mean以下java脚本表达式是什么意思
【发布时间】:2016-11-03 13:13:41
【问题描述】:

我正在浏览一段代码,但遇到了这种语法

str.replace(re,function(raw, p1, p2, p3){
  if (!/\/\//.test(p1)) {  // <---- this one
    //some more code
  }
});

我了解测试方法将一个字符串与另一个字符串匹配,并检查它是否存在。但是这个正则表达式/\/\// 匹配字符串是什么? 我检查了正则表达式,然后

\/ matches the character / literally \/ matches the character / literally

那么if(!//.test(p1)) 在做什么呢?

【问题讨论】:

  • if(!//.test(p1)), 匹配所有不同的东西。 // 包围你的正则表达式,所以 /\/\// 表示 \/\/ 的正则表达式匹配,你需要用 \ 转义 /。所以最后 /\/\// 将与 2/ 连续匹配: //toto

标签: javascript regex string-matching


【解决方案1】:

如果字符串不包含两个连续的斜杠,则条件为真。

【讨论】:

    【解决方案2】:

    如果第一个捕获的组() p1 包含//if 条件下返回false,则使用true 转换为false 使用! 运算符

    【讨论】:

    • @ClasG “这里不涉及任何捕获组。” ? p1 应该是RegExp 的第一个捕获组?
    • 我“删除”了反对票——我关注的问题是“那么 if(!//.test(p1)) 做了什么?” - 没有看到全貌
    • @ClasG 条件可以返回truefalse !/\/\//.test("//")
    【解决方案3】:

    \/ 匹配字符 / 的字面意思。如果没有 2 个连续的/,则上面的正则表达式将执行 if 条件。 看看这个:here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2013-10-02
      • 2012-06-10
      相关资源
      最近更新 更多