如何正则表达式匹配字符串逃脱与SQL样式?

时间:2011-07-16 16:58:09

标签: sql regex

的示例:

"""Romeo and Juliet"""
'another string that is quoted with '' single quotes'

问题是字符串可以包含用于db转义的字符,即使在它的开头和结尾也是如此,因此正则表达式应该看看给定的char是否以奇数长度的顺序使用,即1,3,5 ...最后匹配的字符串

2 个答案:

答案 0 :(得分:7)

尝试使用此正则表达式:'(?:[^']|'')*'表示单引号。双引号相同,即完全正则表达式:

'(?:[^']|'')*'|"(?:[^"]|"")*"

在字符串hello 'my ''beautiful''' 'world'! """Romeo and Juliet"""中,它会找到:

  1. 'my ''beautiful'''
  2. 'world'
  3. """Romeo and Juliet"""

答案 1 :(得分:-1)

如果您的字符串包含(或可能包含)导致sql出现问题的字符,则总是转义。

如果您将PHP与mysql数据库一起使用,请使用mysql_real_escape_string($text);docs

对于其他数据库和语言,您必须检查特定用途,但可能存在现有方法。