猿问

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

我写了这样的正则表达式

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

哪个正在检查字符串是 symbol only

我使用检查器来检查正则表达式是否正确。

然后我把它放到我的php代码中

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

我都尝试过但它不起作用,因为引用被正则表达式中的引用破坏了。

我不想像连接它们一样

$regex="{partA}".'"'."{partB}";

我觉得这太难读了,不容易维护

我该如何解决这个问题?


当年话下
浏览 190回答 3
3回答

青春有我

由于正则表达式本身内部有引号,您的两个正则表达式都会在 PHP 中产生语法错误。如果您不想将正则表达式连接成两个不同的部分,最好的方法是用反斜杠转义引号:$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$";$regex = '^[-!$%^&*()_+|~=`{}\[\]:";\'<>?,.\/]+$';请注意,后者更可取,因为双引号将解析存储在字符串中的任何变量;如果$, 和相应的变量之后有任何文本,则该变量的内容将被注入到正则表达式中:$sample = 'text';$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$sample";echo $regex;// ^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+text除此之外,使用单引号也稍微快一些。
随时随地看视频慕课网APP
我要回答