我有一个要求
.domain
.domain.com
.domain.com/path
.domain.com:443/path
domain.com
domain.com/path
domain.com:443/path
domain
/path
:443/path
应该都是真的
然而
.
./path
.:443
*.domain
*.domain/path
*.domain:443/path
/
:443
*/path
anything with ? in it
应该都返回false。
我在JS中提出了以下内容。但是,经过一些修改,我完全迷失了..
/^\.?[^:\/]([\da-z\.-]+)\.?([a-z\.]{2,6})?(:[0-9]+)?([\/\w \.-]*)*\/?$/
我的测试存根如下所示:
console.log(urlRegExp('*.domain/path'));
console.log(urlRegExp('*.domain:443/path'));
console.log(urlRegExp('/'));
console.log(urlRegExp(':443'));
console.log(urlRegExp('*/path'));
console.log(urlRegExp('domain.com?q=a'));
function urlRegExp(){
return /^\.?[^:\/]([\da-z\.-]+)\.?([a-z\.]{2,6})?(:[0-9]+)?([\/\w \.-]*)*\/?$/.test(arguments[0]) + " " + arguments[0];
}
我无法使用此模式处理所有列出的字符串。每当我更改某些内容以使某些内容通过时,另一个字符串就会失败。我是一个初学者,刚刚开始通过这本食谱深入了解 RegEx。但是,这可能需要一段时间,我需要尽快完成。任何帮助或指导都会很棒。
当前结果:
应该返回真:
true .domain
true .domain.com
true .domain.com/path
true .domain.com:443/path
true domain.com
true domain.com/path
true domain.com:443/path
true domain
false /path -- should be true
false :443/path -- should be true
应该返回假:
false .
false ./path
false .:443
true *.domain -- should be false
true *.domain/path -- should be false
true *.domain:443/path -- should be false
false /
false :443
false */path
false domain.com?q=a