JS Regexp替换"非法"字符来创建PHP函数名称

Ger*_*umm 2 javascript regex

我正在尝试使用此正则表达式从URL生成PHP函数名称(取自PHP手册 - 用户定义的函数:

url = "controller/action,/param";
re = /[^a-zA-Z0-9_\x7f-\xff]*/g; // consecutive characters that are not in range
result = url.replace(re, "_");
Run Code Online (Sandbox Code Playgroud)

我期待结果是controller_action_param(单下划线),但我得到的结果是:_c_o_n_t_r_o_l_l_e_r__a_c_t_i_o_n__p_a_r_a_m_

我认为这是以某种方式连接到UTF-8/Unicode,但不应该\x7f-\xff部分处理它?

JsFiddle示例

mae*_*ics 5

更改*+.本*场比赛零个或多个前面的字符,你想一个或多个.

re = /[^a-zA-Z0-9_\x7f-\xff]+/g;
Run Code Online (Sandbox Code Playgroud)