javascript - 如何在我的 PHP JavaScript 代码中使用此 RegEx 在删除符号时保留 UTF-8 字符?

标签 javascript php regex utf-8

我的目标是仅从我的字符串中删除像#$^&%()'"!,.? 等符号字符和空格,同时保留所有其他 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/

相关文章:

php - 获取美国以外地区的纬度和经度

java - 如何在java中构建正则表达式来检测空格或字符串结尾?

javascript - 正则表达式性能 : Alternation vs Trie

javascript - 如何将数据从 .ejs 文件发送到 .js 文件?

javascript - 什么时候应该在 JavaScript 中使用 delete 与将元素设置为 null?

javascript - 使用 colorByPoint 时如何设置系列的图例符号颜色?

javascript - 如何在 Javascript 中通过关联数组的索引获取 'cycle'

php - Laravel 5.4 在数据透视表中插入时调用 null 上的成员函数 Attach()

php - 最适合 PHP 编程的 Linux 发行版是什么?

regex - XML 模式中正则表达式的正确语法