Php 使用正则表达式检查变量

Php 使用正则表达式检查变量,php,regex,Php,Regex,我要为我的网站创建一个注册表格。我需要检查变量,并且仅当包含字母、数字或-,才接受它 如何使用正则表达式实现它?我曾经使用preg\u replace()与他们一起工作,但我认为情况并非如此。另外,我知道“ereg”函数已经失效。任何解决方案?使用: 在这里,so[\w-]+匹配一个或多个字母、数字、\u和-^和$分别表示字符串的开始和结束。避免了$真正匹配字符串的结尾,并且后面没有换行符 请注意,由\w匹配的字母和数字取决于当前的语言环境,并且可能与除[a-zA-Z0-9]之外的其他字母或数字

我要为我的网站创建一个注册表格。我需要检查变量,并且仅当包含字母、数字或-,才接受它

如何使用正则表达式实现它?我曾经使用
preg\u replace()
与他们一起工作,但我认为情况并非如此。另外,我知道“ereg”函数已经失效。任何解决方案?

使用:

在这里,so
[\w-]+
匹配一个或多个字母、数字、
\u
-
^
$
分别表示字符串的开始和结束。避免了
$
真正匹配字符串的结尾,并且后面没有换行符


请注意,由
\w
匹配的字母和数字取决于当前的语言环境,并且可能与除
[a-zA-Z0-9]
之外的其他字母或数字匹配。因此,如果您只是想要这些,请明确使用它们。如果你想允许更多的字符,你也可以像
\p{L}
一样尝试所有Unicode字母。

尝试preg_match()

这个正则表达式现在很常见

if(preg_match('/^[a-z0-9\-\_]+$/i',$username))
{
   // Ok
}

完美的tnx!我还需要为“姓氏”标记留出一个空格,所以我添加了它(preg_match('/^[a-z0-9\-\\-+$/i',$name)您应该将姓氏分开,因此您必须在3个框中添加一个框,1个框用于用户名,1个框用于名字,1个框用于姓氏等等,这是因为您对用户数据有更具体的控制。当然!我添加了所有这些:)只是,因为在正则表达式中添加“”就足够了,不是吗?只需在I修饰符后面添加一个s,如so
/^[a-z0-9\-\\\\\+$/is
这告诉我们忽略空格。实际上,添加“s”模式修饰符会告诉PCRE允许点元字符(“.”)匹配任何内容,包括换行。通常,“.”匹配除换行符以外的所有内容。在这种情况下,海报只是想给角色集添加一个空间,正如他所建议的那样。
if(preg_match('/^[a-z0-9\-\_]+$/i',$username))
{
   // Ok
}