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}$/'