0

我的页面上有带有文本url字段的表单。用户可以在那里输入任何值,例如:

如何验证是否给出了正确的域 ( example.com),然后提取主题 ID ( 557761)?

看起来我应该jQuery.isNumeric首先使用(以捕获最后一种情况),如果它不是数字,那么我可以提取像/^.*t=(\d+)$/. 但是我应该如何检查正则表达式中的域?

4

4 回答 4

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+$))";
于 2012-12-08T08:52:43.853 回答
0

(?<=example\.com/forum/viewtopic.php\?t=)\d+(?=\&)

http://regexr.com?33333

这应该适合你。

于 2012-12-09T12:11:06.610 回答
0

这应该做的工作:

var domain = "example.com"
var regex = "http://(www)?"+domain+"/.+?t=([0-9]+)";
var match = regex.exec(inputString);
var topicId = match[1];
于 2012-12-08T08:46:08.657 回答
0

<a>您可以使用一个元素来利用浏览器的 URL 解析器:

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!');
}​
于 2012-12-08T09:47:47.990 回答