Javascript regex在在线验证器上工作,但在代码中失败
Javascript regex works on online validator but fails in code
我尝试这个正则表达式:^(?:https?://)?(?:www.)?((?:(?!www.|.).)+.[a-zA-Z0-9.]+)在验证器中:regexplanet.com,提供的输入结果良好,但在这个fiddle中失败: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
这就是您迄今为止所要求的:
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
您可能希望编辑您的问题以更好地指定您的输入以及输出。一些例子会很好。
给定一个输入字段,如:
<input type='text' id='domain'/>
我最终得到了这个解决方案,在这个解决方案中,我首先将其验证为url,然后获得不带"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/
根据评论,我认为你想更换
'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
相关文章:
- 如何使用onclick事件触发此代码.我尝试过,但失败了
- 解析云代码不会记录/警告成功或失败
- jQuery代码在Firefox中工作,但在IE中失败
- 执行Haxe代码时Ant构建失败
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 只有从Node运行时,Rsync才会失败,退出代码为23
- 弹出窗口代码失败
- 为什么我的窗口导航代码失败
- JavaScript 迷宫代码失败
- 跨域请求的 Ajax 代码失败
- firefox中的Cookie代码失败
- 没有语法错误,但代码失败
- 重新生成代码失败
- 为什么这个Javascript原型代码失败了
- Javascript代码失败
- Javascript中的HTML代码失败
- Express.js 4-路由器分区示例代码失败
- EventListener长代码失败,原因
- 上传最后一个文件片时代码失败.(javascript, HTML 5)