Php 允许在Preg匹配验证中使用撇号

Php 允许在Preg匹配验证中使用撇号,php,regex,validation,preg-match,Php,Regex,Validation,Preg Match,不知是否有人能帮助我 我使用以下preg match表达式作为字段验证的一部分 (!preg_match('/^$|^[A-Za-z0-9 .,;-]{5,60}$/', $address4)) 我遇到的问题是,当我将撇号作为我想要允许的字符的一部分时,我无法让它工作 我已经阅读了许多教程,并尝试了以下内容,但没有成功,因此我显然做错了什么: (!preg_match('/^$|^[A-Za-z0-9.,;-\']{5,60}$/',$address4)),和 (!preg_match('/^

不知是否有人能帮助我

我使用以下preg match表达式作为字段验证的一部分

(!preg_match('/^$|^[A-Za-z0-9 .,;-]{5,60}$/', $address4))
我遇到的问题是,当我将撇号作为我想要允许的字符的一部分时,我无法让它工作

我已经阅读了许多教程,并尝试了以下内容,但没有成功,因此我显然做错了什么:

(!preg_match('/^$|^[A-Za-z0-9.,;-\']{5,60}$/',$address4)),

(!preg_match('/^$|^[A-Za-z0-9 .,;-\'\]{5,60}$/', $address4))

我只是想知道是否有人可以看看这个,然后告诉我哪里出了错。

正则表达式字符类中的减号必须始终在末尾。否则,它将作为字符范围。所以试着切换撇号和负号:

preg_match('/^$|^[A-Za-z0-9 .,;\'-]{5,60}$/', $address4)

您好@nwellnhof,非常感谢您抽出时间回复我的帖子并提供解决方案。我已经尝试了你发送的代码,但不幸的是,这不起作用。非常感谢,并以引号(而不是单引号)包装整个图案,然后您可以使用“unescaped”。这有什么区别吗?它真的不应该,但谁知道呢。没有“or\”它工作得很好?当然,您要小心这是一个真正的ASCII单引号,而不是一些MS Smart引号的糟粕?