Php 用于阻止多个项目的正则表达式

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

我在一个收集用户详细信息的网站上有一个表单。有一个傻瓜从不同的IP地址提交了一个名为“Barneycok”的表单,所以我学会了如何阻止该名称在表单上通过

我学了一点正则表达式,刚好可以写这篇小文章:

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很抱歉再次问你,你能澄清一下吗?是的,你知道如果有人使用当前代码,会如何阻塞