我正在尝试从字符串中剥离所有字符,除了:

  • 字母数字字符
  • 美元符号($)
  • 下划线(_)
  • 代码点U+0080U+FFFF之间的Unicode字符

  • 通过执行此操作,我获得了前三个条件:
    preg_replace('/[^a-zA-Z\d$_]+/', '', $foo);
    

    如何匹配第四个条件? I looked at using \X ,但必须有比列出65000多个字符更好的方法。

    最佳答案

    您可以使用:

    $foo = preg_replace('/[^\w$\x{0080}-\x{FFFF}]+/u', '', $foo);
    
  • \w-等效于[a-zA-Z0-9_]
  • \x{0080}-\x{FFFF}匹配代码点之间的字符U +0080 and U + FFFF`
  • /u在正则表达式中支持unicode
  • 10-06 02:26