Javascript 正则表达式问题

Posted

技术标签:

【中文标题】Javascript 正则表达式问题【英文标题】:Javascript RegEx Question 【发布时间】:2011-02-05 18:01:00 【问题描述】:

如何使用 javascript/jquery 正则表达式找到下面的评论块:

  /*

    some description here

  */

它甚至可能看起来像:

  /* some description here
  */

或者

  /* some description here */

【问题讨论】:

【参考方案1】:

我认为使用 php 会是:

$pattern='/\/\*.*?/*///';

$pattern='/\*[^*]*\*+([^/*][^*]*\*+)*/';

把这个弄出来

Improving/Fixing a Regex for C style block comments

这是为了匹配空的评论块:

^\s+/\*1,\n(^\s*\*1,\s*)+\*1,/

【讨论】:

这不考虑回车或换行。我认为提问者需要能够检测具有多行的块 cmets。但是,它确实适用于单线。 @Levi Hackwith 它符合他说或没有说 AND 的最后一个要求:D 问题不是明确说 Javascript 吗? @Pointy 是的,他应该使用 $pattern 而不是 var pattern = myPattern.match()【参考方案2】:

也许这个可以帮助你

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

似乎在工作

http://jsfiddle.net/WDhZP/

【讨论】:

【参考方案3】:

这是一个实际的 Javascript 答案:

var commentRegex = /\/\*([^/]|\/[^*])*\*\//;

如果您需要一个版本来检查 整个 字符串是否是注释:

var completeCommentRegex = /^\/\*([^/]|\/[^*])*\*\/$/m;

解释:正则表达式匹配前导/*,后跟任意数量的除“/”以外的单个字符,或“/”后跟任何非星号,最后是结尾*/。第二个版本中的“m”标志确保嵌入的换行符不会弄乱“^”和“$”锚。

最后,如果您真的想要评论文本,您可以在其中添加一个适当的带括号的块(在/* 之后和*/ 之前)。

【讨论】:

【参考方案4】:
var match = myString.match(/\/\*([\w\W]*)\*\//)

如果match !== nullmatch[0] 将包含注释,match[1] 将包含不带注释分隔符的注释。

编辑:现在是多行;)

【讨论】:

使用[d\D] 而不是.。这将匹配换行符。至少在 .NET 中是这样的 =) “*”和“/”不是单词字符吗?因此它们不会都匹配“\W”吗?确实,“[\w\W]”和“.”不一样吗? . 不匹配 \n\W 匹配。更糟糕的是,您似乎无法将.[] 中的任何其他内容匹配。所以[.\n] 无效。

以上是关于Javascript 正则表达式问题的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 正则表达式问题

正则表达式 - 将 C# 正则表达式转换为 JavaScript 正则表达式的量词的目标无效

在 JavaScript 正则表达式中使用 1+ 所有格量词时出现正则表达式错误

如何将 javascript 正则表达式转换为安全的 Java 正则表达式?

Javascript 的哪些 Javascript 正则表达式功能是 Javascript 独有的?

如何在javascript中验证正则表达式?