删除非字母数字字符而不删除ruby中的国际字符

时间:2014-02-11 19:15:08

标签: ruby regex

我想删除字符串中的非字母数字字符,但不删除国际字符,如重音字母。我也想保留空白。以下是我到目前为止的情况:

the_string = the_string.gsub(/[^a-z0-9 -]/i, '')

这确实删除了国际重音字母字符。

我使用的解决方案:

the_string = the_string.gsub(/[^\p{Alnum}\p{Space}-]/u, '')

有效!感谢。

1 个答案:

答案 0 :(得分:11)

您可以使用character properties执行此操作:

the_string.gsub(/[^\p{Alnum} -]/, '')

您可能还想使用\p{Space}来保留其他空格,例如非破坏空格等。

the_string.gsub(/[^\p{Alnum}\p{Space}-]/, '')

(这也保留了你的正则表达式中的-字符。)