我怎样才能获得正则表达式来验证php addslashes()字符(特别是撇号)

时间:2017-06-22 13:22:39

标签: php regex

我正在尝试使用preg_match()验证字符串(名称)。我传入一个名为$ lname的字符串,这是一个包含撇号的字符串。这方面的一个例子是" O \' Neill"。我已经尝试了多种正则表达式布局和解决方案,包括(\'),\' ,只是'。它不起作用,并使真正的输出有效。任何人都可以提供解决方案。

这是我的代码:

$lname = "O\'Neill";
if(preg_match("/^[a-zA-Z\'\s-]+$/",$lname))
    echo "valid";

1 个答案:

答案 0 :(得分:0)

你的第一个问题不是逃避反斜杠。你需要在正则表达式中用\\写一个字面反斜杠。

但是,如果你这样做,你会在任何地方寻找反斜杠或撇号,而不是顺序\',因为你的[...]匹配任何角色。

执行此操作的正确方法是在括号外查找。

^([a-zA-Z\s-]|\\')+$ 

http://regexr.com/3g7dm

注意:如果您这样做是为了保护您的SQL查询,那么这不是正确的方法。你应该使用准备好的陈述。