使用javascript正则表达式从字符串中删除不需要的字符,以便输入MYSQL语句
您好,我需要从字符串中删除一些不需要的字符,我正在尝试创建一个正则表达式以匹配所需的字符,但我觉得我离此很远,不想创建误报。 非常感谢您的帮助 起始字符串如下所示:使用javascript正则表达式从字符串中删除不需要的字符,以便输入MYSQL语句,javascript,mysql,regex,Javascript,Mysql,Regex,您好,我需要从字符串中删除一些不需要的字符,我正在尝试创建一个正则表达式以匹配所需的字符,但我觉得我离此很远,不想创建误报。 非常感谢您的帮助 起始字符串如下所示: 'SELECT \t* \nFROM \tAudit_Log a WHERE changedate > \'2016-07-21T18:51:41.900Z\'' 但是,MYSQL无法正确解析此内容,因此需要如下所示: 'SELECT * FROM \tAudit_Log a WHERE changedate > '2
'SELECT \t* \nFROM \tAudit_Log a WHERE changedate > \'2016-07-21T18:51:41.900Z\''
但是,MYSQL无法正确解析此内容,因此需要如下所示:
'SELECT * FROM \tAudit_Log a WHERE changedate > '2016-07-21T18:51:41.900Z''
我试过这个,但运气不太好:
str = str.replace('\t', '');
str = str.replace('\n', '');
str = str.replace('\\', '');
这里有一个解决方案
var str = 'SELECT \t* \nFROM \tAudit_Log a WHERE changedate > \'2016-07-21T18:51:41.900Z\'';
str = str.replace(/\t|\n/g, '').replace(/\'/g, "'")
试试这个
str.replace(/[\n\t\r]/g,"")
其他解决方案都没有达到预期效果,我最终使用的模式是:
(\\t|\\n|\\)
如果escape plus
a-z
是罪魁祸首,请将其简化为两种情况:
在第二种情况下,情况并非如此 查找:
(?i)\\(?:([^\\a-z])|[\\a-z])?
替换:
$1
或\1
扩大
(?i) # Case insensitive
\\ # '\' To be removed
(?: # Cluster start
( [^\\a-z] ) # (1), Punctuation written back
| # or,
[\\a-z] # The rest, to be removed
)? # Cluster end, and is optional for EOS
这看起来仍然像:从审计日志a中选择*\n其中changedate>\'2016-07-21T19:00:56.741Z`更新了我的答案。。错过了\n非常感谢,但是现在只是反斜杠,replace('\','')似乎不起作用转义字符在sql语句中做什么?如果是其他字母呢?请意识到您仍然容易受到SQL注入的攻击。永远不要相信来自用户的任何东西。始终在服务器端清理输入。您可以进行清理,以确保内容值得处理,但请务必知道,从客户端更改任何请求都非常容易。抱歉,应该澄清这是在节点端,并且语句不是来自用户。虽然此代码片段可能解决了问题,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性@弗兰克,我同意你的看法。对此表示歉意!。