PHP:Regex用于精确匹配

PHP:Regex用于精确匹配,php,regex,pattern-matching,Php,Regex,Pattern Matching,以下是我目前拥有的正则表达式(哪种类型的作品): 我的修订看起来像我想要的,但根本不起作用: $regex = '^[\w ]{7,30}$'; 下面是我如何使用正则表达式: public function isValid( $value ) { $regex = '/^[\w ]{7,30}$/'; return preg_match( $regex, $value ) ? true : false; } 我正在尝试匹配以下内容: 任何小写/大写字母 任何数字 可以包

以下是我目前拥有的正则表达式(哪种类型的作品):

我的修订看起来像我想要的,但根本不起作用:

$regex = '^[\w ]{7,30}$';
下面是我如何使用正则表达式:

public function isValid( $value )
{

    $regex = '/^[\w ]{7,30}$/';
    return preg_match( $regex, $value ) ? true : false;

}
我正在尝试匹配以下内容:

  • 任何小写/大写字母
  • 任何数字
  • 可以包含空格
  • 不能包含换行符或制表符空间
  • 最少7个字符
  • 最多30个字符
有效输入:

  • 测试
  • 测试
  • 测试123
  • 测试123
  • 试验___
无效输入:

  • 测试#
  • 测试8+
  • 测试员1&

第一个正则表达式将匹配所有有效输入,也将匹配无效输入(只要前四个字符有效,它就不关心其余字符)。第二个正则表达式与任何内容都不匹配。

尝试将这两个正则表达式组合起来,如下所示:

$regex = '/^[\w ]{7,30}$/';
$regex = '/^[\w ]{7,30}$/';

不要忘记分隔符:


/^[\w]{7,30}$/
您缺少开头和结尾的
/


您缺少分隔符。

^…$
匹配整个字符串
\w
匹配字符,
\d
匹配数字也是为了更好地匹配空格,请使用\s/[\w\s]{7,30}/@alickus
\s
包括换行符和制表符,因此不,最好使用
\s
。这会给您一个错误,因为括号/分隔符丢失。试试
$regex='/^[\w]{7,30}$/'@Brian如果你有这样的要求,那么是的,只是尝试一下“有点效果”我不好;当我写我的答案时,这个评论不是实时的。我需要添加分隔符,并从ajax请求中转义输入。除非转义,否则不会发送某些特殊字符。
$regex = '/^[\w ]{7,30}$/';
'/^[\w ]{7,30}$/'