我的perl文档中有以下java脚本函数:
function emailcheck()
{
var emailoutline = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
var x = document.ec.email.value;
if (emailoutline.test(x))
{
alert("valid email");
}
}
是一部分 打印HTML 阻止所以我认为它应该工作正常。如果我在perl文档之外使用它,html部分工作正常,但是一旦我将它链接到那里,它就不再起作用了。 " @"在正则表达式中也标记为绿色,而脚本的所有其余html部分都标记为红色 - 我认为问题在于" @"由perl解释为数组的开头。有没有人知道如何解决这个问题?
这是整个代码:
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
print <<'HTML';
<html>
<head>
<title>Mailcheck</title>
</head>
<body>
<form name="ec" action ="">
Email: <input type="text" name="email"> <br>
<input type="button" value="Pruefen" onclick="javascript:emailcheck();">
</form>
<script language="javascript" type="text/javascript">
function emailcheck()
{
var emailoutline = /^[a-z0-9._%+-]+\@[a-z0-9.-]+\.[a-z]{2,4}$/;
var x = document.ec.email.value;
if (emailoutline.test(x))
{
alert("This is a valid eMail");
}
else
{
alert("This is not a valid eMail");
}
}
</script>
</body>
HTML
exit;
答案 0 :(得分:2)
我自己解决了这个问题:
我不得不像这样重写正则表达式:
var emailoutline = /^[a-z0-9._%+-]+\@[a-z0-9.-]+\.[a-z]{2,4}\$\/\;
因为perl cut of the reserved symbols&#34; $&#34;和&#34; /&#34;。现在代码工作正常 - 只是想发布解决方案,如果其他人遇到同样的问题。感谢您提供的所有帮助:)
答案 1 :(得分:1)
在Perl中,@
是保留字符。您需要将其转义(\@
)以避免被解释为数组符号。
答案 2 :(得分:0)
使用非插值打印来防止Perl尝试扩展变量:
print <<'HTML';
...
HTML