以下代码
var input = "http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/";
var regex = new RegExp("(?:.+?#/([a-zA-Z0-9]{5})/(?:!/([a-zA-Z0-9]{5})/)*)");
var result = input.match(regex);
console.log(result);
// ["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "fghij"]
应该打印这个......
["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "abcde", "fghij"]
...旁
["http://local.app.com/frontend/v12/#/M1WPD/!/abcde/!/fghij/", "M1WPD", "fghij"]
我做错了什么?
答案 0 :(得分:1)
您无法通过量词捕获n
个数量的组。结果是它会捕获该特定组中最后一次出现的匹配!
您必须手动选择组...
应该是:
(?:.+?#/([a-zA-Z0-9]{5})/!/([a-zA-Z0-9]{5})/!/([a-zA-Z0-9]{5})
如果有任意数量的匹配,您可split
使用以下正则表达式
/[#!]/|/$
上述正则表达式意味着将字符串拆分为出现/
后跟#
或!
后跟/
或
/
后跟字符串$
答案 1 :(得分:-1)
Regex pattern = new Regex("[^0-9a-zA-Z]*\\w{5,}");
按上述代码进行更改并尝试