php preg_replace 忽略 [^abc] 构造中的 ^
php preg_replace ignores ^ in [ˆabc] construction
想法是从字符串中删除所有非字母符号。
$string = "abcd 5858add";
print preg_replace('/[ˆa-z]/', '', $string)."\n"; //produces ' 5858' (wrong)
print preg_replace('/[a-z]/', '', $string)."\n"; //produces ' 5858' (right)
第一个正则表达式应该删除所有非字母符号。
第二个应该删除所有字母符号。
但是两者的结果是一样的。
为什么?
测试于 PHP 5.5.30,PHP 5.4.16
那不是插入符号,那是抑扬音符。
使用 [^a-z]
而不是 [ˆa-z]
。
想法是从字符串中删除所有非字母符号。
$string = "abcd 5858add";
print preg_replace('/[ˆa-z]/', '', $string)."\n"; //produces ' 5858' (wrong)
print preg_replace('/[a-z]/', '', $string)."\n"; //produces ' 5858' (right)
第一个正则表达式应该删除所有非字母符号。 第二个应该删除所有字母符号。 但是两者的结果是一样的。 为什么?
测试于 PHP 5.5.30,PHP 5.4.16
那不是插入符号,那是抑扬音符。
使用 [^a-z]
而不是 [ˆa-z]
。