我的目标是仅从我的字符串中删除像#$^&%()'"!,.? 等符号字符和空格,同时保留所有其他 UTF-8 字符、数字和常规字符。我得到了这个工作在 JavaScript 前端,但无法在 PHP 的服务器上运行。这是我的代码:
正则表达式:
/[-'`~!@#$%^&*()_|+=?;:'",.<>\{\}\[\]\\\/\s]/gi
前端(JavaScript):
var accountName = accountNameRaw.replace(/[-'`~!@#$%^&*()_|+=?;:'",.<>\{\}\[\]\\\/\s]/gi, '');
服务器(PHP):
$cleanName = preg_replace('/[-'`~!@#$%^&*()_|+=?;:'",.<>\{\}\[\]\\\/\s]/gi', '', $r["accountname"]);
我在前端得到的输出是Uncaught SyntaxError: Unexpected token <
由于格式错误的响应(它需要 JSON)。当我将 PHP 正则表达式部分更改为 /[^A-Za-z0-9\-]/
时它工作得很好,但它也删除了我的 UTF-8 字符,如 üäéëï 等。:(...
谁能给我一个提示?非常感谢!
最佳答案
在 PHP 中将正则表达式转码为 PCRE 语法时需要注意以下几点:
PHP 中没有
/g
标志。/
分隔符之前的三重反斜杠\\\
在正则表达式中将以\\
结束,并且不会'不要转义/
。仅使用\/
或\\/
- 更好但完全不同的正则表达式分隔符。您确实忘记了在 charclass 中转义您的
"
。您可能希望应用
/u
Unicode 标志。
或者使用 [\pL]
允许 Unicode 字母,或者只使用 [[:punct:]]
去除标点符号。
关于javascript - 如何在我的 PHP JavaScript 代码中使用此 RegEx 在删除符号时保留 UTF-8 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793091/