我的页面上有文字url
字段。用户可以输入任何值,例如:
如何验证是否提供了正确的域名(example.com
),然后提取主题ID(557761
)?
看起来我应该首先使用jQuery.isNumeric
(以捕获最后一种情况),如果它不是数字,那么我可以提取像/^.*t=(\d+)$/
这样的值。但是我应该如何检查正则表达式中的域名?
答案 0 :(得分:1)
这适用于所有情况,除了您说已经有解决方案的最后一个案例。
var pattern = "^(?:http(?:s)?://)?(?:www\.)?example\.com/forum/viewtopic\.php\?t=(\d+)";
var regex = new RegExp(pattern, "i");
var match = regex.exec(string);
if (match) {
alert(match[1]);
}
如果您不介意不太可读的正则表达式模式,那么以下内容将用于捕获您的所有案例(包括最后一个案例)。只需将上面代码中的pattern
行替换为下面的代码即可。
var pattern = "(?:(?:^(?:http(?:s)?://)?(?:www\.)?example\.com/forum/viewtopic\.php\?t=(\d+))|(^\d+$))";
答案 1 :(得分:0)
这应该做的工作:
var domain = "example.com"
var regex = "http://(www)?"+domain+"/.+?t=([0-9]+)";
var match = regex.exec(inputString);
var topicId = match[1];
答案 2 :(得分:0)
您可以使用<a>
元素来利用浏览器的网址解析器:
var myhost = "example.com";
// Here url is the data given in the text input field
var hostname = $('<a>').prop('href', url).prop('hostname');
if (myhost == hostname) {
alert('Host matched!');
}
答案 3 :(得分:0)