2012-02-08 82 views
0

我有一個輕微的問題我試圖找到最佳的解決方案。我有一個表單,用戶可以輸入他們複製的url,它的格式總是相似的。
喜歡傾向:http://www3.google.com/register.php?key=12334123用JavaScript根據第一個字段填寫表單字段

我希望能夠根據上面的輸入填充兩個字段。

字段1將是服務器(子域)

字段2將是關鍵號碼。

我目前已經做了一些工作,但我認爲這將是更好的做法與正則表達式,而不是我做的方式。

不太熱衷於java這對我來說是一個挑戰,任何幫助將不勝感激!

<script language="javascript"> 
function urlbreaker(url) 
{ 
    var startserver = document.form1.url.value.search(/www/) 

    document.form1.server.value = document.form1.url.value.substr(startserver, 4) 

    var startkey = document.form1.url.value.search(/=/) 
    document.form1.key.value = document.form1.url.value.substr(startkey+1, 10) 
} 


</script> 
<form id="form1" name="form1" method="post" action=""> 
    <p> 
    <label for="url">input url:</label> 
    <input type="text" name="url" id="url" onblur="urlbreaker()" /> 
    http://www3.google.com/register.php?key=12334123</p> 
    <p> 
    <label for="server">Server:</label> 
    <input type="text" name="server" id="server" /> 
    should be www3</p> 
    <p> 
    <label for="key">key</label> 
    <input type="text" name="key" id="key" /> 
    should be 12334123</p> 

</form> 

回答

0
function urlbreaker(url) 
{ 
    var match = document.form1.url.value.match(/http:\/\/(.{3,4})\..*?\..*\?(key|.*&key)=(\d*).*/); 

    document.form1.server.value = match[1]; 
    document.form1.key.value = match[3]; 
} 
+0

這個技巧!非常感謝! – Blaine 2012-02-08 06:50:56

0

主機部分和URL的關鍵參數匹配一個簡單的正則表達式是:

var url = 'http://www3.google.com/register.php?key=12334123'; 
var match = /[^:]*\/\/([^\/]+)\/[^?]+\?[\s\S]*?key=(\d*)/m.exec(url); 
var domain = match[1]; // www3.google.com 
var key = match[2]; // 12334123 

您所要求的服務器/子域,因此,如果你想要的' '3'

var url = 'http://www3.google.com/register.php?key=12334123'; 
var match = /[^:]*\/\/([^.]+)[^\/]*\/[^?]+\?[\s\S]*?key=(\d*)/m.exec(url); 
var domain = match[1]; // www3 
var key = match[2]; // 12334123 
相關問題