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 !== null
,match[0]
将包含注释,match[1]
将包含不带注释分隔符的注释。
编辑:现在是多行;)
【讨论】:
使用[d\D]
而不是.
。这将匹配换行符。至少在 .NET 中是这样的 =)
“*”和“/”不是单词字符吗?因此它们不会都匹配“\W”吗?确实,“[\w\W]”和“.”不一样吗?
.
不匹配 \n
但 \W
匹配。更糟糕的是,您似乎无法将.
与[]
中的任何其他内容匹配。所以[.\n]
无效。以上是关于Javascript 正则表达式问题的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式 - 将 C# 正则表达式转换为 JavaScript 正则表达式的量词的目标无效
在 JavaScript 正则表达式中使用 1+ 所有格量词时出现正则表达式错误
如何将 javascript 正则表达式转换为安全的 Java 正则表达式?