Javascript url模式需要正则表达式
我正在添加一些简单的路由,而不使用任何特定的框架 当前正则表达式--> 可能的url模式是Javascript url模式需要正则表达式,javascript,regex,Javascript,Regex,我正在添加一些简单的路由,而不使用任何特定的框架 当前正则表达式--> 可能的url模式是 settings // should be matched to --> group1 = settings, group2 = null, group3 = null, group4 = null settings/ // should be matched to -->
settings // should be matched to --> group1 = settings, group2 = null, group3 = null, group4 = null
settings/ // should be matched to --> group1 = settings, group2 = null, group3 = null, group4 = null
settings/205 // should be matched to --> group1 = settings, group2 = null, group3 = null, group4 = 205
settings/notifications // should be matched to --> group1 = settings, group2 = notifications, group3 = null, group4 = null
settings/notifications/ // should be matched to --> group1 = settings, group2 = notifications, group3 = null, group4 = null
settings/notifications/50 // should be matched to --> group1 = settings, group2 = notifications, group3 = null, group4 = 50
settings/notifications/pingers // should be matched to --> group1 = settings, group2 = notifications, group3 = pingers, group4 = null
settings/notifications/pingers/ // should be matched to --> group1 = settings, group2 = notifications, group3 = pingers, group4 = null
settings/notifications/pingers/101 // should be matched to --> group1 = settings, group2 = notifications, group3 = pingers, group4 = 101
非常感谢您的帮助 您可以在/
上string#拆分,测试最后一个单词是否为数字和空字符串,并使用解构创建对象
var arr=['settings'、'settings/'、'settings/notifications'、'settings/notifications/'、'settings/notifications/50'、'settings/notifications/pingers'、'settings/notifications/pingers/'、'settings/notifications/pingers/101']
var result=arr.map(url=>{
var words=url.split('/');
var last=null;
if(/\d+/g.test(words[words.length-1]))
last=words.pop();
如果(!words[words.length-1]|/\s+/g.test(words[words.length-1]),则为else
words.pop();
var[group1,group2=null,group3=null]=[…单词];
var group4=最后一个;
返回{group1,group2,group3,group4};
});
控制台日志(结果)代码>请在perl中尝试以下代码。这种模式本身在任何地方都适用
$string = "settings/notifications/pingers/101";
#$string = "settings/notifications/pingers";
#$string = "settings/notifications";
#$string = "settings";
$string =~ m/^(\w+)(?:\/)?(\w+)?(?:\/)?(\w+)?(?:\/)?(\d+)?$/;
print $1."\n";
print $2."\n";
print $3."\n";
print $4."\n";
你已经试过的正则表达式在哪里?到底有什么不起作用?正如大多数“请给codez”的问题一样,这是一个太宽泛的话题。请特别注意。在/
和?
上拆分不是更容易吗?不,b/c我需要填充所有这4个组,如果拆分,我需要在阵列中循环,这是非常昂贵的。谢谢!首先,我不想使用map或任何其他成本太高的b/c迭代技术。其次,我可能会将其与服务器端语言(而不是节点)一起使用,而不能使用诸如解构和传播之类的东西。所以我真的在寻找一种匹配模式
$string = "settings/notifications/pingers/101";
#$string = "settings/notifications/pingers";
#$string = "settings/notifications";
#$string = "settings";
$string =~ m/^(\w+)(?:\/)?(\w+)?(?:\/)?(\w+)?(?:\/)?(\d+)?$/;
print $1."\n";
print $2."\n";
print $3."\n";
print $4."\n";