问题
I managed to find the regex for handling /* */ cases but it doesn't work well for -- cases. How can I change my regex to fix this?
var s = `SELECT * FROM TABLE_A
/* first line of comment
second line of comment */
-- remove this comment too
SELECT * FROM TABLE_B`;
var stringWithoutComments = s.replace(/(\/\*[^*]*\*\/)|(\/\/[^*]*)|(--[^*]*)/g, '');
/*
Expected:
SELECT * FROM TABLE_A
SELECT * FROM TABLE_B
*/
console.log(stringWithoutComments);
Thank you
https://jsfiddle.net/8fuz7sxd/1/
回答1:
var s = `SELECT * FROM TABLE_A
/* first line of comment
second line of comment */
-- remove this comment too
SELECT * FROM TABLE_B`;
var stringWithoutComments = s.replace(/(\/\*[^*]*\*\/)|(\/\/[^*]*)|(--[^.].*)/gm, '');
/*
Expected:
SELECT * FROM TABLE_A
SELECT * FROM TABLE_B
*/
console.log(stringWithoutComments);
// without linebreak
stringWithoutComments = stringWithoutComments.replace(/^\s*\n/gm, "")
console.log(stringWithoutComments);
// without whitespace
stringWithoutComments = stringWithoutComments.replace(/^\s+/gm, "")
console.log(stringWithoutComments);
来源:https://stackoverflow.com/questions/57814265/regex-to-remove-comments-from-sql-query-string-using-javascript