使用基于第一个字段的Javascript填充表单字段

时间:2012-02-08 00:42:14

标签: javascript regex forms url substr

我有一个小问题,我正在努力寻找最佳解决方案。我有一个表单,用户将输入他们复制的网址,它的格式将始终类似 像这样:http://www3.google.com/register.php?key=12334123

我希望能够根据上面的输入填充两个字段。

字段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>

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

与url的主机部分和key参数匹配的简单正则表达式为:

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

您要求服务器/子域名,所以如果您想要'www3'

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