我有一个小问题,我正在努力寻找最佳解决方案。我有一个表单,用户将输入他们复制的网址,它的格式将始终类似 像这样: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>
答案 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