Php 如何在char列表中包含单引号和双引号?
我这样写正则表达式Php 如何在char列表中包含单引号和双引号?,php,regex,regex-negation,regex-lookarounds,regex-greedy,Php,Regex,Regex Negation,Regex Lookarounds,Regex Greedy,我这样写正则表达式 ^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$ 我都试过了,但它不起作用,因为引用被正则表达式中的引用打断了 我不想像你一样盯着他们 $regex="{partA}".'"'."{partB}"; 我认为这太难阅读,也不容易维护 如何解决这个问题?两个正则表达式在PHP中都会产生语法错误,因为正则表达式本身中有引号 如果不想将正则表达式连接成两个不同的部分,最好的方法是用反斜杠转义引号: $regex = "^[-!$%^&
^[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$
我都试过了,但它不起作用,因为引用被正则表达式中的引用打断了
我不想像你一样盯着他们
$regex="{partA}".'"'."{partB}";
我认为这太难阅读,也不容易维护
如何解决这个问题?两个正则表达式在PHP中都会产生语法错误,因为正则表达式本身中有引号 如果不想将正则表达式连接成两个不同的部分,最好的方法是用反斜杠转义引号:
$regex = "^[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/]+$";
$regex = '^[-!$%^&*()_+|~=`{}\[\]:";\'<>?,.\/]+$';
除此之外,使用单引号也会稍微快一些。对于您的第一个表达式,这里我们可以使用\x27和\x22代替引号,并且我们可能希望删除开始字符和结束字符,可能类似于:
[-!$%^&*()_+|~=`{}\[\]:\x22;\x27<>?,.\/]+
([\s\S].*?)([a-z0-9]+)?
试验
const regex=/([\s\s].*)([a-z0-9]*)/gmi;
const str=`{partA}.''.''.{partB}{partC12}.''.''.{partD109}{partA}.'''.''.''.{partB}{partC12}.'''.''.{partD109}'.';
常量subst=`2`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);
log('替换结果:',结果)代码>也许您的正则表达式可以像^(?。*[\\@])[[:punct:]+$
一样简单
[:punct://code>是其中之一。
演示和解释在
[-!$%^&*()_+|~=`{}\[\]:\x22;\x27<>?,.\/]+
([\s\S].*?)([a-z0-9]+)?
$re = '/([\s\S].*?)([a-z0-9]*)/mi';
$str = '{partA}".\'"\'."{partB}{partC12}".\'"\'."{partD109}{partA}".\'"\'."{partB}{partC12}".\'"\'."{partD109}';
$subst = '$2 ';
$result = preg_replace($re, $subst, $str);
echo $result;