Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Javascript正则表达式preg_替换_Php_Javascript_Regex - Fatal编程技术网

Php Javascript正则表达式preg_替换

Php Javascript正则表达式preg_替换,php,javascript,regex,Php,Javascript,Regex,应用于此字符串的正则表达式(从PHP移植到Javascript,Node.js): /users/:uid/posts/:pid /users/:uid /messages/:mid 上面的字符串包含参数(在“:”符号之后),直到下一个正斜杠,我用字符串正则表达式替换这些参数。最终应该是这样的: /users/([a-zA-Z0-9\-\_]+)/posts/([a-zA-Z0-9\-\_]+) 因此,路由中的所有参数都应替换为正则表达式字符串。我使用以下代码来实现这一点: var fixe

应用于此字符串的正则表达式(从PHP移植到Javascript,Node.js):

/users/:uid/posts/:pid
/users/:uid
/messages/:mid
上面的字符串包含参数(在“:”符号之后),直到下一个正斜杠,我用字符串正则表达式替换这些参数。最终应该是这样的:

/users/([a-zA-Z0-9\-\_]+)/posts/([a-zA-Z0-9\-\_]+)
因此,路由中的所有参数都应替换为正则表达式字符串。我使用以下代码来实现这一点:

var fixedRoute = route[url].replace(/\\\:[a-zA-Z0-9\_\-]+/, '([a-zA-Z0-9\-\_]+)');
输出相同,不替换字符串。有人能帮我弄一下这个正则表达式吗

非常感谢

您忘记了,这是反向引用

所以这会变成类似“hihifoobar”的东西。替换(/foo(bar)/i,$1)
将呈现“hihi bar”

更新(基于上述评论):


我曾尝试使用/g作为全局修饰符,但它不起作用。。。还有什么可能导致此问题?我不理解捕获组/反向引用。您不需要再这样做了。来自更新的正则表达式将用您想要的替换“uid”、“pid”和“mid”。您可以快速试用这个正则表达式,看看它是否有效!谢谢你的接受!你理解正则表达式还是需要额外的解释?/messages/:mid应该变成:/messages/([a-zA-Z0-9\-\-\+)路由[url]的内容是什么?var routes={'GET/users/':{'controller':'users','action':'GET'}第一个字符串'GET/users/'会是路由[url]的内容,我现在正在测试我的正则表达式
.replace(/:[upm]id/ig, ([a-zA-Z0-9\-\_]+));