我在网站上有一个收集用户详细信息的表单。有一个傻瓜提交的表格名称如" Barneycok"来自不同的IP地址,所以我学会了如何阻止该名称在表单上进行。
我学到了一点正则表达式,足以写下这篇小文章:
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;
}
代码完美无缺,我再也没有这个名字了。但是,最近有人在名称字段中输入了一串数字。
字符串如下所示:
123456789
123498568
123477698
12346897w
如果您注意到,前4个字符始终保持不变。
那么如何在上面的正则表达式中添加它,以便如果名称以&#34; 1234&#34;开头,它将简单地匹配该正则表达式并向用户提供错误代码?
非常感谢您的帮助。
的Jaime
答案 0 :(得分:0)
以下正则表达式将起作用。
^1234.*
答案 1 :(得分:0)
这将匹配以$FirstName
开头的1234
。要匹配Barneycok
这样的特定字词,您应该使用此(b|B)arneycok
正则表达式: ^\s*1234|\b(?:b|B)arneycok\b
1。
^\s*1234
以1234
开头,可以在开始时包含空格2。
|
与or
条件类似,3。
的字词\b(?:b|B)arneycok\b
匹配包含barneycok
或Barneycok
if (preg_match('/^1234|\b(?:b|B)arneycok\b/i', $FirstName))
{
$error.= "<li><font face=arial><strong>Sorry, an error occured. Please try again later.</strong><br><br>";
$errors = 1;
}
答案 2 :(得分:0)
为了提供最佳模式来保护您的网站,我想提供此信息:
/^\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;
}
在SO上,重要的是发布最佳答案并授予绿色标记,因为次优答案可能会导致OP表现不佳以及教授未来SO读者不良做法/草率编码写作习惯。我希望你发现这个改进很有帮助,也很有用。