我试试这个正则表达式:^(?:https?://)?(?:www。)?((?:(?!www。|。)。)+。[a-zA-Z0-9 。] +)在这里的验证器中:regexplanet.com并且结果适用于所提供的输入,但它在这个小提琴中失败:jsfiddle
<input type="text" id="domain">
$(document).ready(function(){
$('#domain').blur(function(){
var str = $.trim($(this).val());
var pat = /^(?:https?:\/\/)?(?:www\.)?((?:(?!www\.|\.).)+\.[a-zA-Z0-9.]+)/mg;
if (pat.test(str)){
var match = str.match(pat);
$(this).val(match);
}
else{
$(this).val('Validation failed');
}
});
我尝试做的是:www.gmail.com,http://www.gmail.com,gmail.com/example等,只需获取gmail.com
答案 0 :(得分:0)
这是你迄今为止所要求的:
var tests = [
'www.gmail.com',
'http://www.gmail.com',
'https://www.gmail.com',
'https://gmail.com/',
'www.gmail.com/asdf',
'gmail.com/',
'gmail.com/example'
];
var domains = tests.map(function(url){
return url.replace(/^(https?:\/\/)?(www\.)?|\/.*/g, '');
})
domains.every(function(domain){
return domain === 'gmail.com';
}); // true
您可能想要编辑问题以更好地指定输入 和产出。一些例子会很好。
答案 1 :(得分:0)
给定一个输入字段,如:
<input type='text' id='domain'/>
我最终得到了这个解决方案,我首先将其验证为网址,然后获取没有'http://','https://','www。'的字符串。
$(document).ready(function(){
function ValidUrl(str) {
var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
if(!pattern.test(str)) {
return false;
} else {
return true;
}
}
$('#domain').change(function(){
var str = $.trim($(this).val());
if(ValidUrl(str)){
var pat = /^(https?:\/\/)?(?:www\.)?([^\/]+)/;
var match = str.match(pat);
console.log(match);
//$(this).val(str);
}
else{
$(this).val('Validation failed');
}
});
});
另见jsfiddle:http://jsfiddle.net/6mrbbq9x/5/
答案 2 :(得分:0)
根据评论我认为你想要替换
'www.gmail.com',
'http://www.gmail.com',
'https://www.gmail.com',
'https://gmail.com/',
'www.gmail.com/asdf',
'gmail.com/',
'gmail.com/example' with gmail.com only
所以这是正则表达式:
var pat = /^(https?:\/\/)?(?:www\.)?([^\/]+).*$/
另见jsfiddle:http://jsfiddle.net/6mrbbq9x/3/
在这个jsfiddle中我用.change
替换了.blur