书签 - 验证 URL 格式并提取子字符串
Bookmarklet - Verify URL format and extract substring
我正在尝试构建一个书签来构建服务客户端,但我对Javascript并不流利。在下面的代码中,我想获取当前页面的网址,并首先验证它是域之后遵循特定格式的网址,即......
/photos/[any alphanumeric string]/[any numeric string]
之后的第三个"/"应该始终是我需要提取到 var 中的数字字符串。此外,我不能只是从最后开始并向后工作,因为有时在数字字符串之后会有一个"/",然后是我不需要的其他东西。
indexOf(( 是验证 url 是否为特定格式的正确函数,我将如何编写该表达式?我已经尝试了几件与 indexOf(( 和 Regex(( 相关的事情,但没有成功。我似乎总是以一个意想不到的角色结束,或者它只是不起作用。
当然,我问题的第二部分是,一旦我知道 url 是正确的格式,如何将数字字符串提取到变量中?
感谢您的任何帮助!
javascript:(function(){
// Retrieve the url of the current page
var photoUrl = window.location.pathname;
if(photoUrl.indexOf(/photos/[any alphanumeric string]/[any numeric string]) == true) {
// Extract the numeric substring into a var and do something with it
} else {
// Do something else
}
})();
var id = window.location.pathname.match(/'/photos'/('w+)'/('d+)/i);
if (id) alert(id[1]); // use 1 or 2 depending on what you want
else alert('url did not fit expected format');
(编辑:将第一个'd*
更改为'w+
,将第二个'd*
更改为'd+
,dig
更改为id
。
要测试字符串的模式并获取其部分,可以使用正则表达式。对你的标准的解释是这样的:
/^'/photos'/'w+'/('d+)'/?$/
它将匹配以 /photos/开头的任何字符串,后跟任何字母数字字符(和下划线(,后跟任何数字和字符串末尾的可选 /,包装在捕获组中。
因此,如果我们这样做:
"/photos/abc123/123".match(/^'/photos'/'w+'/('d+)'/?$/)
结果将是 ["/photos/abc123/123", "123"]。您可能已经注意到,捕获组是第二个数组元素。
即用型功能:
var extractNumeric = function (string) {
var exp = /^'/photos'/'w+'/('d+)'/?$/,
out = string.match(exp);
return out ? out[1] : false;
};
您可以在此处找到更详细的示例。
所以,答案是:
indexOf(( 是验证 url 是否是特定 格式,我将如何编写该表达式?我试过几个 与 indexOf(( 和 Regex(( 相关的东西,但没有成功。我似乎 总是以一个意想不到的角色结束,或者它只是不起作用。
indexOf 不是这项工作的最佳选择,您使用正则表达式是正确的,但缺乏这样做的经验。
当然,我问题的第二部分是一旦我知道网址是 正确的格式,如何将数字字符串提取到变量中?
正则表达式与匹配函数一起将允许测试字符串的所需格式并同时获取其部分。
- 使用gulp-angular gettext从JS文件中提取字符串不起作用
- Javascript:如何通过Regexp从属性中提取字符串
- 使用Node/Javascript提取字符串中的所有占位符
- 需要从随机大小的字符串中提取字符串
- 用unicode字符提取字符串中的单词
- 使用java脚本提取字符串
- JavaScript:如何提取字符串中的复杂内容
- 如何删除“;NULL”;使用Javascript从sails.js中的JSON对象中提取字符串
- 当前面的数字或前面字符的组合未知时提取字符串
- 如何根据 javascript 中的两个字符比较从另一个字符串中提取字符串
- 从两边提取字符串和相等数量的字符
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 使用 javascript 从脚本标记中提取字符串
- 如何根据某些正则表达式模式提取字符串的“部分”
- 检查是否为数字,如果是字母,则在javascript中提取字符串的一部分
- 介绍JS学生使用isNaN(与其他语句结合使用)提取字符串
- 正则表达式后视以提取字符串
- 从另一个url或字符串中提取字符串
- 使用Javascript提取字符串中的数字
- 在javascript中提取字符串中的数字