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

<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 に答える
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 に答える