我想在一个字符串中删除非字母数字字符,但不删除国际字符,例如重音字母。我还想保留空格。以下是我目前的代码:
the_string = the_string.gsub(/[^a-z0-9 -]/i, '')
这确实可以去除国际音标的字母。
我使用的解决方案:
the_string = the_string.gsub(/[^\p{Alnum}\p{Space}-]/u, '')
它有效了!谢谢。
the_string.gsub(/[^\p{Alnum} -]/, '')
您可能还想使用 \p{Space}
来保留其他空白字符,例如不间断空格等:
the_string.gsub(/[^\p{Alnum}\p{Space}-]/, '')
-
字符。)u
标志以指定正则表达式为utf-8:/[^\p{Alnum}\p{Space}-]/u
。 - mattu
修饰符是什么意思?“正则表达式默认使用源编码。可以使用以下修饰符之一来覆盖此设置。/pat/u
- UTF-8” – http://www.ruby-doc.org/core-1.9.3/Regexp.html#class-Regexp-label-Encoding - matt