使用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
是罪魁祸首,请将其简化为两种情况:

  • 逃逸+非a-z或逃逸
  • 逃逸+a-z或逃逸
  • 在第一种情况下,非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注入的攻击。永远不要相信来自用户的任何东西。始终在服务器端清理输入。您可以进行清理,以确保内容值得处理,但请务必知道,从客户端更改任何请求都非常容易。抱歉,应该澄清这是在节点端,并且语句不是来自用户。虽然此代码片段可能解决了问题,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性@弗兰克,我同意你的看法。对此表示歉意!。