我试着环顾四周,并认为我使用preg_match
计算出来,但是preg match给了我错误:
警告:preg_match():没有结束分隔符'^'
这是我原来的代码,php说这是折旧的:
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email'])) {
$erroR= "Invalid Email address";
}
有人可以解释结尾分隔符'^'是什么,以及如何添加它。感谢@
答案 0 :(得分:2)
将eregi()
与preg_match()
交换,并在正则表达式中添加分隔符。我在这里选择了标准/
,但您可以使用其他字符。
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $_POST['email'])) {
$erroR= "Invalid Email address";
}
您收到此警告的原因......
警告:
preg_match()
:无结尾分隔符'^'
...是因为preg_match()
期望分隔符,并且它假设正在使用^
,并且它与尾随符号不匹配。
答案 1 :(得分:1)
在表达式之前和之后添加/
- 您需要preg_replace
的分隔符来告诉它正则表达式的开始和结束位置。它可以是:
A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.
Often used delimiters are forward slashes (/), hash signs (#) and tildes (~).
所以这会奏效:
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/"