我是regex的新手。我在php表单上有一个评论输入部分,实际上是电子邮件正文,将使用邮件功能发送。我想使用preg_match()进行基本检查,以确保它只有句子(数字,字母,标准标点符号)而不是恶意代码等。
我发现这是一个建议,但它似乎不起作用。
([A-Z][^\.!?]*[\.!?]\s)
答案 0 :(得分:-1)
谚语说“曾几何时,程序员遇到了问题。他认为他会用RegEx来解决这个问题。现在,他有两个问题。”
实际上还有很多其他功能可以完全满足您的需求,而不需要Regex的地狱。
尝试以下任何一项:
if(ctype_alnum($yourSentenceString)){ //proceed, string is safe. }
$filteredString = filter_var($yourSentenceString, FILTER_SANITIZE_STRING);
// ^There are lots of flags, besides FILTER_SANITIZE_STRING that will suit other needs.
// FILTER_VALIDATE_EMAIL is a good one, for example...
答案 1 :(得分:-1)
这种模式可以达到你想要的效果:
[^\d\s\w\.\?\,]
当与preg_match()一起使用时,它将返回第一个匹配的数组。 preg_match_all()将返回一个包含所有匹配项的数组。在这种情况下,匹配是不允许的字符。
我建议您在我推荐的RegExp Tester中使用此模式:
如果您是RegExp的新手,我建议您使用RegExp在线测试仪。他们中有很多人。这只是一个例子:http://www.phpliveregex.com/。
这将有助于理解如何处理RegExp。