除了ruby中的特殊字符外,如何匹配所有语言的字符

时间:2011-08-26 07:41:56

标签: ruby regex

我有一个显示名称字段,我必须使用Ruby regex进行验证。我们必须匹配所有语言字符,如法语,阿拉伯语,中文,德语,西班牙语以及英语字符,除了*()等特殊字符!@#$%^& ....我坚持如何匹配那些非拉丁字符。

3 个答案:

答案 0 :(得分:3)

有两种可能性:

  • 创建一个带有否定字符类的正则表达式,其中包含想要匹配的每个符号:

    if ( name ~= /[^*!@%\^]/ ) # add everything and if this matches you are good
    

    此解决方案可能不可行,因为即使您只是要包含最常见的符号,也必须插入大量符号。


答案 1 :(得分:1)

从Ruby 1.9开始,StringRegex类可识别unicode。您可以安全地使用正则表达式字符选择器\w

"可口可樂!?!".gsub /\w/, 'Ha'
#=> "HaHaHaHa!?!"

答案 2 :(得分:0)

在红宝石中> 1.9.1(可能更早)可以使用 $my_command_result = $this->dispatch( new MyCommand(); ); 来匹配所有语言中的单词字符(没有上一个答案中描述的oniguruma gem)。