正则表达式不可打印字符加货币符号
Regex Non Printable Character Plus Currency Symbols
我想匹配非打印字符加货币符号以下匹配非打印字符,如何添加对货币符号的期望?
$str = preg_replace('/[[:^print:]]/', '', $str);
\p{Sc}
模式匹配货币符号,只需将其放入否定字符class(或括号表达式 在 POSIX 术语中)。
使用
$re = '/(*UTF)[^[:print:]\p{Sc}]+/';
echo preg_replace($re, '', '£aA€');
参见regex demo and the PHP demo。
详情:
(*UTF)
- 一个 PCRE 动词,使 PCRE 引擎将字符串视为 Unicode 字符串,而不是字节字符串(注意我们不能使用 /u
修饰符,因为它同时启用 (*UTF)
和 (*UCP)
动词,后者使所有子模式都识别 Unicode,然后 [^[:print:]]
开始匹配更多字符)
[^[:print:]\p{Sc}]+
- 匹配任何 1 个或多个符号(由于 +
量词),除了:
[:print:]
- 可打印字符
\p{Sc}
- 货币符号
我想匹配非打印字符加货币符号以下匹配非打印字符,如何添加对货币符号的期望?
$str = preg_replace('/[[:^print:]]/', '', $str);
\p{Sc}
模式匹配货币符号,只需将其放入否定字符class(或括号表达式 在 POSIX 术语中)。
使用
$re = '/(*UTF)[^[:print:]\p{Sc}]+/';
echo preg_replace($re, '', '£aA€');
参见regex demo and the PHP demo。
详情:
(*UTF)
- 一个 PCRE 动词,使 PCRE 引擎将字符串视为 Unicode 字符串,而不是字节字符串(注意我们不能使用/u
修饰符,因为它同时启用(*UTF)
和(*UCP)
动词,后者使所有子模式都识别 Unicode,然后[^[:print:]]
开始匹配更多字符)[^[:print:]\p{Sc}]+
- 匹配任何 1 个或多个符号(由于+
量词),除了:[:print:]
- 可打印字符\p{Sc}
- 货币符号