【发布时间】:2019-08-31 16:20:41
【问题描述】:
我正在尝试从 javascript 中的 SQL 字符串中删除所有 cmets。我有这个正则表达式,它几乎删除了所有这些,但有一个问题。
请查看此链接
https://regex101.com/r/JaEWKO/1
当存在嵌套的多行 cmets 时,正则表达式无法按预期工作。该方案已在链接中提到
我已经在 stackoverflow 上浏览了多个关于这个问题的链接¯\_(ツ)_/¯
Regular expression to remove comments from SQL statement
还有很多其他
这是我当前使用的正则表达式
var sql = storedProc.replace(/(--.*)|(((\/\*)+?[\w\W]+?(\*\/)+))/g, '')
我希望它从字符串中删除所有注释,但在嵌套多行 cmets 的情况下它会中断。
谁能帮我解决这个问题?
【问题讨论】:
-
你的意思是这样的:
(?:--.*)|(?:\/\*)+?[\w\W]+?\n\*\/regex101.com/r/OQIFM4/1 -
@Thefourthbird 只是这个问题。看到这个链接regex101.com/r/JaEWKO/2
-
Please have a look on this link https://regex101.com/r/JaEWKO/1PCRE (PHP) 正则表达式与 javascript 有什么关系? -
@JaromandaX 对不起,我忘了更改“风味”:)
-
while (/\/\*[^\/*]*(?:\/(?!\*)[^\/*]*|\*(?!\/)[^\/*]*)*\*\//.test(s)) { s = s.replace(/\/\*[^\/*]*(?:\/(?!\*)[^\/*]*|\*(?!\/)[^\/*]*)*\*\//g, ''); }(见demo)
标签: javascript regex