php 类中定义正则表达式不能带$

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:37:25
<?php
class Aaa
{
private $email = "^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$";
function checkMail()
{
if(!ereg($this->email,$_POST[name]))
{
echo "err";
}
else
{
echo "ok";
}
}

}
?>
<form action="aa.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit">
</form>
<?php
$aaa=new Aaa();
$aaa->checkMail();
?>
上面是我在php中定义的一个类,功能是用正则表达式验证电子邮件,但是字符串$email内不能含有“$”,否则系统提示出错,若不定义类就不会出现这个问题,请高手指教这个问题该怎么解决?谢谢!
这里的“$”是匹配行尾,不能用“\”转义,否则就是匹配美元符号“$”了,就不符合要求了;
如果不定义类,直接在php文件中定义“$email”和方法就不会出现这个问题,谁有没有解决的办法?

private $email = "^[_a-z0-9]+@([_a-z0-9]+\\.)+[a-z0-9]{2,3}\$";

不仅仅是 $ 还有 \, 另外很多其他的 \s, \S 在ereg下都无法正常使用
------------------------------------
\ 既是正则表达式的转移字符, 也是php的转移字符, 除非在preg的 / 后面, 否则 \ 总是优先所谓php的转移字符进行解析的

所以上面的字符串必须经过php的一次解析

"^[_a-z0-9]+@([_a-z0-9]+\\.)+[a-z0-9]{2,3}\$"

解析成

"^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$"

作为正则表达式使用..