要件があります
.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 を返す必要があります:
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 .
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