Php 用于阻止多个项目的正则表达式
我在一个收集用户详细信息的网站上有一个表单。有一个傻瓜从不同的IP地址提交了一个名为“Barneycok”的表单,所以我学会了如何阻止该名称在表单上通过 我学了一点正则表达式,刚好可以写这篇小文章:Php 用于阻止多个项目的正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我在一个收集用户详细信息的网站上有一个表单。有一个傻瓜从不同的IP地址提交了一个名为“Barneycok”的表单,所以我学会了如何阻止该名称在表单上通过 我学了一点正则表达式,刚好可以写这篇小文章: if (preg_match('/\b(\w*arneycok)\b/', $FirstName)){ $error.= "<li><font face=arial><strong>Sorry, an error occured. Please try agai
if (preg_match('/\b(\w*arneycok)\b/', $FirstName)){
$error.= "<li><font face=arial><strong>Sorry, an error occured. Please try again later.</strong><br><br>";
$errors=1;
}
如果您注意到,前4个字符在整个过程中是恒定的
那么,我如何在上面的正则表达式中添加它,以便如果名称以“1234”开头,它将简单地匹配该正则表达式并向用户提供错误代码
非常感谢你的帮助
Jaime以下正则表达式将起作用
^1234.*
下面的正则表达式将起作用
^1234.*
这将匹配以
1234
开头的$FirstName
。要匹配特定单词,如Barneycok
,应使用此(b|b)arneycok
正则表达式:^\s*1234|\b(?:b|b)arneycok\b
1.^\s*1234
以1234
开头可以包含空格
2.|
类似于或条件
3.\b(?:b | b)arneycok\b
匹配包含barneycok
或barneycok
if(preg_match('/^1234|\b(?:b|b)arneycok\b/i',$FirstName))
{
$error.=“抱歉,发生错误。请稍后再试。
”;
$errors=1;
}
这将匹配以1234
开头的$FirstName
。要匹配特定单词,如Barneycok
,应使用此(b|b)arneycok
正则表达式:^\s*1234|\b(?:b|b)arneycok\b
1.^\s*1234
以1234
开头可以包含空格
2.|
类似于或条件
3.\b(?:b | b)arneycok\b
匹配包含barneycok
或barneycok
if(preg_match('/^1234|\b(?:b|b)arneycok\b/i',$FirstName))
{
$error.=“抱歉,发生错误。请稍后再试。
”;
$errors=1;
}
为了提供保护您网站的最佳模式,我想提供以下内容:
/^\s*1234|barneycok/i
这将匹配第一个非白色字符为1234
的字符串以及包含子字符串barneycok
(不区分大小写)的字符串
您会注意到模式:
- 省略前导单词边界(让它抓住abarneycok
)
不必为管道介于B
和B
之间的非捕获组而烦恼(因为在使用i
标志时它是毫无意义的)
省略后面的单词边界(让它捕捉barneycoka
)
使用i
标志以便捕获bArNeYcOk
您可以通过以下方式实现该模式:
if(preg_match('/^\s*1234|barneycok/i',$FirstName)){
$error.="<li><font face=arial><strong>Sorry, an error occurred. Please try again later.</strong><br><br>";
$errors=1;
}
if(preg_match('/^\s*1234 | barneycok/i',$FirstName)){
$error.=“抱歉,发生错误。请稍后再试。
”;
$errors=1;
}
因此,发布最佳答案并授予绿色勾号是很重要的,因为次优答案有可能在OP中表现不佳,也有可能教给未来读者错误的做法/草率的编码写作习惯。我希望您能发现这种改进有帮助且信息丰富。为了提供保护您网站的最佳模式,我想提供以下内容:
/^\s*1234|barneycok/i
这将匹配第一个非白色字符为1234
的字符串以及包含子字符串barneycok
(不区分大小写)的字符串
您会注意到模式:
- 省略前导单词边界(让它抓住abarneycok
)
不必为管道介于B
和B
之间的非捕获组而烦恼(因为在使用i
标志时它是毫无意义的)
省略后面的单词边界(让它捕捉barneycoka
)
使用i
标志以便捕获bArNeYcOk
您可以通过以下方式实现该模式:
if(preg_match('/^\s*1234|barneycok/i',$FirstName)){
$error.="<li><font face=arial><strong>Sorry, an error occurred. Please try again later.</strong><br><br>";
$errors=1;
}
if(preg_match('/^\s*1234 | barneycok/i',$FirstName)){
$error.=“抱歉,发生错误。请稍后再试。
”;
$errors=1;
}
因此,发布最佳答案并授予绿色勾号是很重要的,因为次优答案有可能在OP中表现不佳,也有可能教给未来读者错误的做法/草率的编码写作习惯。我希望您能发现这一改进方案既有帮助又能提供信息。谢谢您。。。但是如何将其添加到上面的正则表达式代码中?这条线是这样的吗?if(preg_match('/\b(\w*arneycok)^1234.*\b/',$FirstName)){谢谢你…但是我如何将它添加到上面的正则表达式代码中?行是这样的吗?if(preg_match('/\b(\w*arneycok)^1234.*\b/',$FirstName)){@jamine希望我的代码能帮助你…嘿,Sahil…谢谢你的贡献。问题是现在Barneycok可以再次提交了。我只需要“添加”将1234添加到正则表达式中,这样它也会阻止它和Barneycok。有意义吗?:-)@jamine希望我的代码能帮助你…嘿,Sahil…感谢你的贡献。问题是Barneycok现在可以再次提交了。我只需“添加”将1234转换为正则表达式,这样它也会阻止它和Barneycok。有意义吗?:-)嗨,Sahil…谢谢你的输入。问题是这段代码去掉了“Barneycok”,所以我会再次让那个傻瓜使用这个名字。如果可能的话,我想将另一个正则表达式添加到同一个sting中。很抱歉我没有澄清这一点。:-@Jaime很抱歉再次问你,你能澄清一下吗?是的,你知道如果有人使用当前代码,会如何阻塞