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

Kev*_*n K 8 ruby regex

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

the_string = the_string.gsub(/[^a-z0-9 -]/i, '')
Run Code Online (Sandbox Code Playgroud)

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

我使用的解决方案:

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

有用!谢谢.

mat*_*att 11

您可以使用字符属性来执行此操作:

the_string.gsub(/[^\p{Alnum} -]/, '')
Run Code Online (Sandbox Code Playgroud)

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

the_string.gsub(/[^\p{Alnum}\p{Space}-]/, '')
Run Code Online (Sandbox Code Playgroud)

(这也保留了-你的正则表达式中的角色.)