【问题标题】:PHP regex - add UTF-* charactersPHP 正则表达式 - 添加 UTF-* 字符
【发布时间】:2012-07-26 20:09:22
【问题描述】:

我正在学习正则表达式。

我有以下正则表达式:

/^[a-zA-Z0-9 +=,?.;:\'\"_()-]+$/m

我需要在这个正则表达式中添加 UTF-8 字符。使用 u 修饰符添加 \w 不起作用 - 任何想法为什么?

【问题讨论】:

  • Mohammar, \w 不仅仅包含字母。
  • 你可以看到他已经添加了数字和下划线。所以添加 \pL 没问题

标签: php regex


【解决方案1】:

您的问题不清楚。如果您想将所有 unicode 字符添加到 [...],那么它将匹配所有内容...

如果您只想添加一些特定的 unicode,请使用\uXXXX,其中XXXX 是其十六进制代码。但是对于 PHP,您需要添加 /u 修饰符。

通过http://www.regular-expressions.info/unicode.html了解更多信息


更新:多次阅读您的帖子后,我相信您正在寻找正则表达式

/^[\p{L}\p{N} +=,?.;:\'\"_()-]+$/um

【讨论】:

  • 我认为他们希望字符类 \w 能够识别 Unicode。不过,文档对此相当沉默,甚至没有正式定义 \w 包含的内容:|
  • @Joey - 我相信最好的选择是^[\p{L}\p{N}]+$/u。我不确定_ 是否在\p{L} 中,但它在\w 中。
  • 下划线不是字母,因此需要明确包含在内。另外我认为\p{Nd} 更准确。
  • @Joey - 区别只是排除了代表数字的表意文字 - 从未见过任何象形文字:)
  • @Ωmega - 谢谢 - 我在尝试让它工作时搞砸了一切,感谢您的解决方案。我目前正在阅读文档并最终尝试学习正则表达式:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2014-03-05
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多