我写了这样的正则表达式^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$哪个正在检查字符串是 symbol only我使用检查器来检查正则表达式是否正确。然后我把它放到我的php代码中$regex = "^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$";
$regex = '^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$';我都尝试过但它不起作用,因为引用被正则表达式中的引用破坏了。我不想像连接它们一样$regex="{partA}".'"'."{partB}";我觉得这太难读了,不容易维护我该如何解决这个问题?
3 回答
青春有我
TA贡献1784条经验 获得超8个赞
由于正则表达式本身内部有引号,您的两个正则表达式都会在 PHP 中产生语法错误。
如果您不想将正则表达式连接成两个不同的部分,最好的方法是用反斜杠转义引号:
$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$";
$regex = '^[-!$%^&*()_+|~=`{}\[\]:";\'<>?,.\/]+$';
请注意,后者更可取,因为双引号将解析存储在字符串中的任何变量;如果$, 和相应的变量之后有任何文本,则该变量的内容将被注入到正则表达式中:
$sample = 'text';
$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$sample";
echo $regex;
// ^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+text
除此之外,使用单引号也稍微快一些。
- 3 回答
- 0 关注
- 189 浏览
添加回答
举报
0/150
提交
取消