为了账号安全,请及时绑定邮箱和手机立即绑定

如何在字符列表中包含单引号和双引号?

如何在字符列表中包含单引号和双引号?

PHP
当年话下 2021-06-30 22:50:50
我写了这样的正则表达式^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$哪个正在检查字符串是 symbol only我使用检查器来检查正则表达式是否正确。然后我把它放到我的php代码中$regex = "^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$"; $regex = '^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$';我都尝试过但它不起作用,因为引用被正则表达式中的引用破坏了。我不想像连接它们一样$regex="{partA}".'"'."{partB}";我觉得这太难读了,不容易维护我该如何解决这个问题?
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

由于正则表达式本身内部有引号,您的两个正则表达式都会在 PHP 中产生语法错误。


如果您不想将正则表达式连接成两个不同的部分,最好的方法是用反斜杠转义引号:


$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$";

$regex = '^[-!$%^&*()_+|~=`{}\[\]:";\'<>?,.\/]+$';

请注意,后者更可取,因为双引号将解析存储在字符串中的任何变量;如果$, 和相应的变量之后有任何文本,则该变量的内容将被注入到正则表达式中:


$sample = 'text';

$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$sample";


echo $regex;

// ^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+text

除此之外,使用单引号也稍微快一些。


查看完整回答
反对 回复 2021-07-02
  • 3 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信