如何确定字符串是否与模式类型匹配
How to determine if a string matches a pattern type
给定以下模式类型:其中11和22是变量:
#/projects/11
#/projects/11/tasks/22
与Javascript/jQuery,给定var url,我如何确定var url是否等于字符串1,2或两者都不是?
谢谢
您可以使用单个正则表达式:
var reg = /^#'/projects'/('d+)(?:'/tasks'/('d+))?$/,
str = "#/projects/11/tasks/22",
match = str.match(reg);
if (match && !match[2])
// Match on string 1
else if (match && match[2])
// Match on string 2
else
// No match
我写的表达式使用子表达式来捕获数字;结果将是如下所示的数组:
"#/projects/11/tasks/22".match(reg);
//-> ["#/projects/11/tasks/22", "11", "22"]
"#/projects/11".match(reg);
//-> ["#/projects/11", "11", undefined]
网上有很多正则表达式教程可以帮助你理解如何解决这样的问题,我建议你在谷歌上搜索这样的教程。
我会亲自研究Regex,因为它很容易设置模式并测试字符串是否适用于它。试试这个:http://www.regular-expressions.info/javascript.html
这里有一个更灵活的方法,您也可以用于其他url http://jsfiddle.net/EXRXE/
/*
in: "#/cat/34/item/24"
out: {
cat: "34",
item: "24"
}
*/
function translateUrl(url) {
// strip everytying from the beginning that's not a character
url = url.replace(/^[^a-zA-Z]*/, "");
var parts = url.split("/");
var obj = {};
for(var i=0; i < parts.length; i+=2) {
obj[parts[i]] = parts[i+1]
}
return obj;
}
var url = translateUrl('#/projects/11/tasks/22');
console.log(url);
if (url.projects) {
console.log("Project is " + url.projects);
}
if (url.tasks) {
console.log("Task is " + url.tasks);
}
相关文章:
- 使用模式格式化Number类型输入中的值
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 如何在javascript对象中设置属性的类型,就像mongoose模式设计一样
- 如何在模式窗口中从html表单文件类型打开图像
- 其他类型的文件上传中的输入模式
- 在无类型语言中是否存在模式匹配之类的东西
- 模块模式中的私有方法:类型错误:未定义不是一个函数
- 处理输入类型文件模式中的按键
- 它是什么类型的Javascript模式
- 为什么正则表达式模式不符合 javascript 数据类型的条件
- 引导模式委托偶数类型语法
- c#asp.net如何使用bootstrap模式将视频源文件名添加到不同的媒体类型中
- 为什么NaN不是json模式基元类型
- 输入类型复选框在引导模式中不起作用
- javascript自定义模式验证类型
- 如何获取JSON对象的模式并输出到包含类型的字符串
- Phonegap构建android禁用home/power/softkeys (kiosk模式类型的应用程序)
- 这个JS遵循什么类型的模式?
- 从输入控件检索特定模式类型的子节点
- Function.prototype.call在严格模式之外改变this的类型;为什么