我在跟踪“a”标签上的onclick事件,点击函数将获取“a”标签的href属性。我想检查href是绝对路径还是相对路径。是否有正则表达式可以检查?
除了这个模式之外:
"/myfolder/test.txt"
"http://example.com"
"https://example.com"
我需要检查的其他模式是什么?
我在跟踪“a”标签上的onclick事件,点击函数将获取“a”标签的href属性。我想检查href是绝对路径还是相对路径。是否有正则表达式可以检查?
除了这个模式之外:
"/myfolder/test.txt"
"http://example.com"
"https://example.com"
str.startsWith
方法:
console.log("/myfolder/test.txt".startsWith("/"));
console.log("http://example.com".startsWith("/"));
console.log("https://example.com".startsWith("/"));
/
或~
开头的路径:
console.log(/^([?/~]|mailto.*@.*\.\w+$)/.test("mailto:mail@example.org"));
console.log(/^([?/~]|mailto.*@.*\.\w+$)/.test("~/myfolder/test.txt"));
console.log(/^([?/~]|mailto.*@.*\.\w+$)/.test("/myfolder/test.txt"));
console.log(/^([?/~]|mailto.*@.*\.\w+$)/.test("http://example.com"));
console.log(/^([?/~]|mailto.*@.*\.\w+$)/.test("https://example.com"));
function isAbsoluteUri(str) {
var uri = new URI(str);
return uri.is('absolute');
}
console.log(isAbsoluteUri('/myfolder/test.txt'));
console.log(isAbsoluteUri('~/myfolder/test.txt'));
console.log(isAbsoluteUri('?hello=world'));
console.log(isAbsoluteUri('http://example.com'));
console.log(isAbsoluteUri('https://example.com'));
console.log(isAbsoluteUri('ftp://example.com'));
console.log(isAbsoluteUri('mailto:mail@example.com'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>
isAbsoluteUri('http://example.com')
=== true
。谢谢。 - Yosvel Quintero/
开头。代码如下:^\/.*
function checkRelpath(){
var anChrs = $('a');
$.each(anChrs, function(idx, itm){
var pattern = new RegExp('/^(http|https|http:|https:|\/\/)/'),
path = $(itm).prop('href'),
testPath = pattern.test(path);
console.log(path);
console.log(testPath);
});
}
或者,如果您想测试特定的锚点,可以这样做。
function checkThisRelpath(a){
var pattern = new RegExp('/^(http|https|http:|https:|\/\/)/'),
path = $(a).prop('href'),
testPath = pattern.test(path);
console.log(path);
console.log(testPath);
}
/**
* Return true is the URL is absolute
*
* @export
* @param {string} url
* @returns
*/
export function isURLAbsolute(url) {
if (typeof url !== 'string') {
throw new TypeError('Expected a string');
}
return /^[a-z][a-z0-9+.-]*:/.test(url);
}
foo:bar
如何成为绝对 URL? - bfontaine