Php 基本句子preg_匹配的正则表达式

Php 基本句子preg_匹配的正则表达式,php,preg-match,Php,Preg Match,我对regex不熟悉。我在php表单上有一个评论输入部分,实际上是电子邮件正文文本,将使用邮件功能发送。我想使用preg_match()做一个基本检查,确保它只包含句子(数字、字母、标准标点符号)而不是恶意代码等 我觉得这是一个建议,但似乎不起作用 ([A-Z][^\.!?]*[\.!?]\s) 俗话说:“从前,一个程序员有一个问题。他认为他会用正则表达式来解决这个问题。现在,他有两个问题。” 实际上,还有很多其他函数可以完全按照您的要求执行,而无需使用Regex 请尝试以下任一方法: if(

我对regex不熟悉。我在php表单上有一个评论输入部分,实际上是电子邮件正文文本,将使用邮件功能发送。我想使用preg_match()做一个基本检查,确保它只包含句子(数字、字母、标准标点符号)而不是恶意代码等

我觉得这是一个建议,但似乎不起作用

([A-Z][^\.!?]*[\.!?]\s)
俗话说:“从前,一个程序员有一个问题。他认为他会用正则表达式来解决这个问题。现在,他有两个问题。”

实际上,还有很多其他函数可以完全按照您的要求执行,而无需使用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...

此模式将满足您的需要:

[^\d\s\w\.\?\,] 
与preg_match()一起使用时,它将返回第一个匹配的数组。preg_match_all()将返回一个包含所有匹配项的数组。在这种情况下,不允许使用匹配字符

我建议您在下面推荐的RegExp测试仪中使用此模式:

如果您不熟悉RegExp,我建议您使用RegExp在线测试仪。有很多。这只是一个例子:


这将有助于理解如何处理RegExp。

因为它更多的是一个建议而不是一个答案,所以您应该将其作为评论发布。不幸的是,您只能回答问题。在这种情况下,毫无疑问。所以我只能给出建议。但至少你是对的:)问题是,什么是一个好的正则表达式,可以允许字母(大写和小写)、数字、puncuation(,!?)?一般检查有效的句子结构。因为论坛里有很多专家,我认为这是一个简单的问题…问题是,你要求的东西,并不像你认为的那样有效。preg_match()正在搜索一个或多个匹配模式,并返回包含匹配组的数组。如果你使用了我的建议,你可能会自己发现这一点,而不是投反对票。此模式将满足您的需要:
[^\d\s\w\.\?\,]
与preg\u match()一起使用时,将返回第一个匹配的数组。preg_match_all()将返回一个包含所有匹配项的数组。在这种情况下,不允许匹配文件。我建议你在我推荐的RegExp测试仪中使用这个模式。@Dood先生:很好,你删除了我的答案,并在评论中明确了我的意思,这样我写这个答案的人就看不到了。干得好,伙计。你是对的,我这样回答,因为我无法对原始帖子发表评论。再一次…干得好。