我正在我的网站上制作一个表单,但我的2个正则表达式有问题。(我有一个PHP正则表达式和一个JS正则表达式,因为我读到只有javascript是危险的)
第一个是在PHP
$name = mysql_real_escape_string($_POST['name']);
if(strlen($name) < 2 || strlen($name) > 20 || preg_match('#[0-9]#',$name))
{
echo '<p class="center"> je naam: <b> '.$name.' </b> bevat cijfers en/of mag niet korter zijn dan 2 tekens en niet langer zijn dan 20 tekens. </p>';
echo '<p class="center"> <a href="javascript:history.go(-1);">Ga terug</a></p> ';
}
如果名称中有数字,则此pregmatch给定是错误的。问题是我不希望人们有还有那个名字里的东西。
正确的正则表达式是什么。
接下来是Javascript
function checkform ( form )
{
if (form.name.value == "")
{
alert( "Please enter your name." );
form.name.focus();
return false ;
}
if (form.email.value == "")
{
alert( "Please enter your email address." );
form.email.focus();
return false ;
}
return true ;
}
在这里,我想要同样的东西,并验证它检查空度和长度,而不是#$^&!
对于电子邮件验证,我需要另一个正则表达式,但我稍后会搜索它。
问候Jochem
如果您看到错误,请进行编辑。
编辑:
var re和var regex是我找到的电子邮件regex。但是他们为什么不工作,因为我不太好,有人用脏话给了我一个很好的答案
function checkform ( form )
{
var rex = /[^a-z]/i;
var regex = /^([a-zA-Z0-9_'.'-])+'@(([a-zA-Z0-9'-])+'.)+([a-zA-Z0-9]{2,4})+$/;
var re = /^(([^<>()[']''.,;:'s@'"]+('.[^<>()[']''.,;:'s@'"]+)*)|('".+'"))@(('[[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'])|(([a-zA-Z'-0-9]+'.)+[a-zA-Z]{2,}))$/;
if (regex.test(form.email.value))
{
alert( "Please enter your email address." );
form.email.focus();
return false ;
}
if (rex.test(form.name.value))
{
alert( "Please enter your name. no numbers or #$^& things allowed)." );
form.name.focus();
return false ;
}
return true ;
}
如果您只想接受字母,请使用/[^a-z]/i
。您可以在PHP和JavaScript中使用此正则表达式。