如何使用正则表达式为非拉丁文字定义促销?

时间:2012-10-18 16:06:02

标签: regex unicode utf-8 google-custom-search

以下正则表达式适用于匹配任何搜索查询(最多25个字符),以“如何”字样开头,作为Google自定义搜索中的促销查询:

How\b.{0,25}\b

但是,当我使用非拉丁语UTF-8单词时,它不起作用,例如阿拉伯语“كيف”:

كيف\b.{0,25}\b

任何人都知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

我对Google自定义搜索并不十分熟悉,但似乎这是一个JavaScript正则表达式,对吗?

如果是这样,那么问题是\b表示“单词”字符和“非单词”字符之间的边界,其中“单词”字符是ASCII字母,下划线或数字( [A-Za-z_0-9])。

没有真正的通用解决方案; JavaScript根本不知道有关ASCII范围之外的单个字符的任何信息,因此它无法分辨哪些是字母而哪些不是。但你可以这样写:

/^كيف(?:\s.{0,24})?$/

匹配任何 单词كيف的查询,或者由单词كيف后跟空白字符和最多24个字符组成。我认为这应该非常接近满足你的要求。