Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Javascript 创建一个读取类似wordpress模式的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 创建一个读取类似wordpress模式的正则表达式

Javascript 创建一个读取类似wordpress模式的正则表达式,javascript,regex,Javascript,Regex,我想从一个url中读取一系列参数,比如/name/value 这是我到目前为止使用的正则表达式,但它只捕获最后一对参数。 如何在一个组中捕获整个参数集?(a、b、c) 演示: 正则表达式: \/controller\/action((\/(\w+)\/([\w\=]+)*))*) 测试URL: /财务主任/行动/a/10/b/79/c/34 /控制员/行动 您需要: /controller/action((?:/\w+/\w+)+)? 即: /controller/action ((?:

我想从一个url中读取一系列参数,比如/name/value

这是我到目前为止使用的正则表达式,但它只捕获最后一对参数。 如何在一个组中捕获整个参数集?(a、b、c)

演示:

正则表达式:
\/controller\/action((\/(\w+)\/([\w\=]+)*))*)

测试URL:

/财务主任/行动/a/10/b/79/c/34
/控制员/行动

您需要:

/controller/action((?:/\w+/\w+)+)?
即:

  • /controller/action
  • ((?:/\w+/\w+)?
    -捕获组$1,零次或一次,所有内容都捕获到此组中
  • (?:/\w+/\w++)
    -名称/值对的非捕获组,重复一次或多次,这将重复此组内的模式,并将其返回给外部捕获组$1
  • /\w+/\w+
    -要测试的模式,根据您的需要调整此模式

如果一切顺利的话,你最终会得到
/a/10/b/79/c/34
中的
$1

为什么是regex?为什么不使用简单的字符串操作,比如
split()
或解析方法呢?因为我使用的是pagejs,它在路由函数中接受正则表达式。谢谢,有没有办法得到像[['a',10],'b',79],'c',34]]这样的成对数组?我原以为你就是这么想的,但是js不支持递归之类的东西。您可以使用
split
,然后您知道
name
将类似于
s[0]
s[2]
,并且
值将像
s[1]
s[3]
一样是奇数。我想这是你从js正则表达式中得到的最好的结果